diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
index 9e1075028..c983338fd 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
@@ -35,6 +35,7 @@ import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ExifReader;
+import org.openstreetmap.josm.tools.HiDPISupport;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -774,12 +775,15 @@ public class ImageDisplay extends JComponent implements Destroyable, PreferenceC
                     if (bi != null) {
                         r.x = r.y = 0;
 
+                        double s = HiDPISupport.getHiDPIScale();
+
                         // See https://community.oracle.com/docs/DOC-983611 - The Perils of Image.getScaledInstance()
                         // Pre-scale image when downscaling by more than two times to avoid aliasing from default algorithm
-                        bi = ImageProvider.createScaledImage(bi, target.width, target.height,
+                        bi = ImageProvider.createScaledImage(bi, (int) (target.width * s), (int) (target.height * s),
                                 RenderingHints.VALUE_INTERPOLATION_BILINEAR);
-                        r.width = target.width;
-                        r.height = target.height;
+                        r.width = (int) (target.width * s);
+                        r.height = (int) (target.height * s);
+
                         image = bi;
                     }
                 } catch (OutOfMemoryError oom) {
diff --git a/src/org/openstreetmap/josm/tools/HiDPISupport.java b/src/org/openstreetmap/josm/tools/HiDPISupport.java
index b84e5879e..e187fd53f 100644
--- a/src/org/openstreetmap/josm/tools/HiDPISupport.java
+++ b/src/org/openstreetmap/josm/tools/HiDPISupport.java
@@ -175,7 +175,7 @@ public final class HiDPISupport {
      * only take the default screen device into account.
      * @return the GUI scale for HiDPI mode, a value of 1.0 means standard mode.
      */
-    static double getHiDPIScale() {
+    public static double getHiDPIScale() {
         if (GraphicsEnvironment.isHeadless())
             return 1.0;
         GraphicsConfiguration gc = GraphicsEnvironment
