--- old/src/java.desktop/windows/classes/sun/awt/windows/TranslucentWindowPainter.java 2017-10-31 16:36:42.705258085 +0530 +++ new/src/java.desktop/windows/classes/sun/awt/windows/TranslucentWindowPainter.java 2017-10-31 16:36:42.497154085 +0530 @@ -30,6 +30,7 @@ import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Window; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; import java.awt.image.VolatileImage; @@ -38,6 +39,7 @@ import sun.java2d.DestSurfaceProvider; import sun.java2d.InvalidPipeException; import sun.java2d.Surface; +import sun.java2d.pipe.Region; import sun.java2d.pipe.RenderQueue; import sun.java2d.pipe.BufferedContext; import sun.java2d.pipe.hw.AccelGraphicsConfig; @@ -178,14 +180,19 @@ @Override protected Image getBackBuffer(boolean clear) { - int w = window.getWidth(); - int h = window.getHeight(); + GraphicsConfiguration gc = peer.getGraphicsConfiguration(); + AffineTransform transform = gc.getDefaultTransform(); + int w = Region.clipRound( + window.getWidth() * transform.getScaleX()); + int h = Region.clipRound( + window.getHeight() * transform.getScaleY()); if (backBuffer == null || backBuffer.getWidth() != w || backBuffer.getHeight() != h) { flush(); - backBuffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE); + backBuffer = new BufferedImage(gc, w, h, BufferedImage + .TYPE_INT_ARGB_PRE); } return clear ? (BufferedImage)clearImage(backBuffer) : backBuffer; }