diff --git a/extras/Introjucer/Source/Project/jucer_Module.cpp b/extras/Introjucer/Source/Project/jucer_Module.cpp index 86a9dd14fe..a99c009ffd 100644 --- a/extras/Introjucer/Source/Project/jucer_Module.cpp +++ b/extras/Introjucer/Source/Project/jucer_Module.cpp @@ -138,8 +138,7 @@ File AvailableModuleList::getModulesFolderForJuceOrModulesFolder (const File& f) File AvailableModuleList::getModulesFolderForExporter (const ProjectExporter& exporter) { File f (exporter.getProject().resolveFilename (exporter.getJuceFolderString())); - f = getModulesFolderForJuceOrModulesFolder (f); - return f; + return getModulesFolderForJuceOrModulesFolder (f); } File AvailableModuleList::getDefaultModulesFolder (Project* project) diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp index 18255f00c5..ebae01c3d5 100644 --- a/modules/juce_gui_basics/components/juce_Component.cpp +++ b/modules/juce_gui_basics/components/juce_Component.cpp @@ -1872,9 +1872,14 @@ void Component::internalRepaintUnchecked (const Rectangle& area, const bool CHECK_MESSAGE_MANAGER_IS_LOCKED if (ComponentPeer* const peer = getPeer()) - peer->repaint (ComponentHelpers::scaledScreenPosToUnscaled (*this, - affineTransform != nullptr ? area.transformedBy (*affineTransform) - : area)); + { + // Tweak the scaling so that the component's integer size exactly aligns with the peer's scaled size + const Rectangle peerBounds (peer->getBounds()); + const Rectangle scaled (area * Point (peerBounds.getWidth() / (float) getWidth(), + peerBounds.getHeight() / (float) getHeight())); + + peer->repaint (affineTransform != nullptr ? scaled.transformedBy (*affineTransform) : scaled); + } } else { diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp index 475d24dd03..01daad7968 100644 --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp @@ -111,10 +111,12 @@ void ComponentPeer::handlePaint (LowLevelGraphicsContext& contextToPaintTo) if (component.isTransformed()) g.addTransform (component.getTransform()); - const float masterScale = component.getDesktopScaleFactor(); + const Rectangle peerBounds (getBounds()); - if (masterScale != 1.0f) - g.addTransform (AffineTransform::scale (masterScale)); + if (peerBounds.getWidth() != component.getWidth() || peerBounds.getHeight() != component.getHeight()) + // Tweak the scaling so that the component's integer size exactly aligns with the peer's scaled size + g.addTransform (AffineTransform::scale (peerBounds.getWidth() / (float) component.getWidth(), + peerBounds.getHeight() / (float) component.getHeight())); #if JUCE_ENABLE_REPAINT_DEBUGGING g.saveState();