--- old/src/share/classes/java/awt/SplashScreen.java 2014-06-18 16:34:12.000000000 +0400 +++ new/src/share/classes/java/awt/SplashScreen.java 2014-06-18 16:34:12.000000000 +0400 @@ -245,7 +245,13 @@ public Rectangle getBounds() throws IllegalStateException { synchronized (SplashScreen.class) { checkVisible(); - return _getBounds(splashPtr); + float scale = _getScaleFactor(splashPtr); + Rectangle bounds = _getBounds(splashPtr); + if (scale != 1) { + bounds.setSize((int) (bounds.getWidth() / scale), + (int) (bounds.getWidth() / scale)); + } + return bounds; } } @@ -287,10 +293,15 @@ public Graphics2D createGraphics() throws IllegalStateException { synchronized (SplashScreen.class) { if (image==null) { - Dimension dim = getSize(); - image = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_ARGB); + // get unscaled splash image size + Dimension dim = _getBounds(splashPtr).getSize(); + image = new BufferedImage(dim.width, dim.height, + BufferedImage.TYPE_INT_ARGB); } - return image.createGraphics(); + float scale = _getScaleFactor(splashPtr); + Graphics2D g = image.createGraphics(); + g.scale(scale, scale); + return g; } } @@ -401,5 +412,6 @@ private native static String _getImageFileName(long splashPtr); private native static String _getImageJarName(long SplashPtr); private native static boolean _setImageData(long SplashPtr, byte[] data); + private native static float _getScaleFactor(long SplashPtr); };