--- old/src/java.desktop/windows/classes/sun/awt/windows/WTrayIconPeer.java 2016-09-09 17:27:35.274014999 +0530 +++ new/src/java.desktop/windows/classes/sun/awt/windows/WTrayIconPeer.java 2016-09-09 17:27:35.001879000 +0530 @@ -28,16 +28,19 @@ import java.awt.Graphics2D; import java.awt.AWTEvent; import java.awt.Frame; +import java.awt.GraphicsEnvironment; import java.awt.PopupMenu; import java.awt.Point; import java.awt.TrayIcon; import java.awt.Image; +import java.awt.geom.AffineTransform; import java.awt.peer.TrayIconPeer; import java.awt.image.*; import sun.awt.AWTAccessor; import sun.awt.SunToolkit; import sun.awt.image.IntegerComponentRaster; +import sun.java2d.pipe.Region; final class WTrayIconPeer extends WObjectPeer implements TrayIconPeer { static final int TRAY_ICON_WIDTH = 16; @@ -123,16 +126,21 @@ return; boolean autosize = ((TrayIcon)target).isImageAutoSize(); + AffineTransform tx = GraphicsEnvironment.getLocalGraphicsEnvironment(). + getDefaultScreenDevice().getDefaultConfiguration(). + getDefaultTransform(); + int w = Region.clipScale(TRAY_ICON_WIDTH, tx.getScaleX()); + int h = Region.clipScale(TRAY_ICON_HEIGHT, tx.getScaleY()); - BufferedImage bufImage = new BufferedImage(TRAY_ICON_WIDTH, TRAY_ICON_HEIGHT, - BufferedImage.TYPE_INT_ARGB); + BufferedImage bufImage = new BufferedImage(w, + h, BufferedImage.TYPE_INT_ARGB); Graphics2D gr = bufImage.createGraphics(); if (gr != null) { try { gr.setPaintMode(); - gr.drawImage(image, 0, 0, (autosize ? TRAY_ICON_WIDTH : image.getWidth(observer)), - (autosize ? TRAY_ICON_HEIGHT : image.getHeight(observer)), observer); + gr.drawImage(image, 0, 0, (autosize ? w : image.getWidth(observer)), + (autosize ? h : image.getHeight(observer)), observer); createNativeImage(bufImage);