--- old/src/java.desktop/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java 2015-10-22 07:47:10.627415800 -0700 +++ new/src/java.desktop/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java 2015-10-22 07:47:10.314898100 -0700 @@ -28,6 +28,7 @@ import java.awt.Rectangle; import java.awt.GraphicsConfiguration; import java.awt.color.ColorSpace; +import java.awt.geom.AffineTransform; import java.awt.image.ColorModel; import java.awt.image.ComponentColorModel; import java.awt.image.DirectColorModel; @@ -77,6 +78,9 @@ private static native void initIDs(Class xorComp); + private final double scaleX; + private final double scaleY; + static { initIDs(XORComposite.class); if (WindowsFlags.isGdiBlitEnabled()) { @@ -265,13 +269,23 @@ this.graphicsConfig = (Win32GraphicsConfig) peer.getGraphicsConfiguration(); this.solidloops = graphicsConfig.getSolidLoops(sType); - - Win32GraphicsDevice gd = - (Win32GraphicsDevice)graphicsConfig.getDevice(); + Win32GraphicsDevice gd = graphicsConfig.getDevice(); + scaleX = gd.getDefaultScaleX(); + scaleY = gd.getDefaultScaleY(); initOps(peer, depth, rMask, gMask, bMask, gd.getScreen()); setBlitProxyKey(graphicsConfig.getProxyKey()); } + @Override + public double getDefaultScaleX() { + return scaleX; + } + + @Override + public double getDefaultScaleY() { + return scaleY; + } + /** * {@inheritDoc} * @@ -288,6 +302,8 @@ public Rectangle getBounds() { Rectangle r = peer.getBounds(); r.x = r.y = 0; + r.width = (int) Math.ceil(r.width * scaleX); + r.height = (int) Math.ceil(r.height * scaleY); return r; }