diff --git a/src/org/openstreetmap/josm/tools/ImageProvider.java b/src/org/openstreetmap/josm/tools/ImageProvider.java
index 9351a47..7f41b35 100644
--- a/src/org/openstreetmap/josm/tools/ImageProvider.java
+++ b/src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -1328,8 +1328,12 @@ public class ImageProvider {
             Logging.debug("Cursors are not available in headless mode. Returning null for ''{0}''", name);
             return null;
         }
+        Point hotSpot = "crosshair".equals(name) ? new Point(10, 10) : new Point(3, 2);
+        float scaling = 1.0f;
+        if (GraphicsEnvironment.getLocalGraphicsEnvironment().getClass().getName().equals("sun.awt.Win32GraphicsEnvironment"))
+            scaling = Toolkit.getDefaultToolkit().getScreenResolution() / 96.0f;
         return Toolkit.getDefaultToolkit().createCustomCursor(img.getImage(),
-                "crosshair".equals(name) ? new Point(10, 10) : new Point(3, 2), "Cursor");
+                new Point(Math.round(hotSpot.x * scaling), Math.round(hotSpot.y * scaling)), name);
     }
 
     /** 90 degrees in radians units */
