diff --git a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp index 5e60c6d8d9..de094a58f3 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp @@ -296,15 +296,17 @@ public: { if (auto* peer = component.getPeer()) { + auto localBounds = component.getLocalBounds(); + auto displayScale = Desktop::getInstance().getDisplays().findDisplayForRect (component.getTopLevelComponent()->getScreenBounds()).scale; + + auto newArea = peer->getComponent().getLocalArea (&component, localBounds).withZeroOrigin() * displayScale; + #if JUCE_WINDOWS && JUCE_WIN_PER_MONITOR_DPI_AWARE auto newScale = getScaleFactorForWindow (nativeContext->getNativeHandle()); #else - auto newScale = Desktop::getInstance().getDisplays().findDisplayForRect (component.getTopLevelComponent()->getScreenBounds()).scale; + auto newScale = displayScale; #endif - auto localBounds = component.getLocalBounds(); - auto newArea = peer->getComponent().getLocalArea (&component, localBounds).withZeroOrigin() * newScale; - if (scale != newScale || viewportArea != newArea) { scale = newScale;