--- old/src/java.desktop/windows/classes/sun/awt/windows/TranslucentWindowPainter.java 2017-11-03 19:06:29.932519132 +0530 +++ new/src/java.desktop/windows/classes/sun/awt/windows/TranslucentWindowPainter.java 2017-11-03 19:06:29.684519132 +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; @@ -134,6 +136,8 @@ while (!done) { if (repaint) { Graphics2D g = (Graphics2D)bb.getGraphics(); + g.transform(peer.getGraphicsConfiguration() + .getDefaultTransform()); try { window.paintAll(g); } finally { @@ -178,8 +182,12 @@ @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) --- old/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java 2017-11-03 19:06:30.616519132 +0530 +++ new/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java 2017-11-03 19:06:30.352519132 +0530 @@ -33,6 +33,7 @@ import java.awt.Dialog; import java.awt.Dimension; import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; @@ -717,7 +718,13 @@ public final Graphics getTranslucentGraphics() { synchronized (getStateLock()) { - return isOpaque ? null : painter.getBackBuffer(false).getGraphics(); + Graphics g = isOpaque ? null : painter.getBackBuffer(false) + .getGraphics(); + if (g != null) { + ((Graphics2D)g).transform(getGraphicsConfiguration() + .getDefaultTransform()); + } + return g; } }