--- old/src/share/classes/java/awt/SplashScreen.java 2014-06-23 13:44:30.000000000 +0400 +++ new/src/share/classes/java/awt/SplashScreen.java 2014-06-23 13:44:30.000000000 +0400 @@ -245,7 +245,14 @@ public Rectangle getBounds() throws IllegalStateException { synchronized (SplashScreen.class) { checkVisible(); - return _getBounds(splashPtr); + float scale = _getScaleFactor(splashPtr); + Rectangle bounds = _getBounds(splashPtr); + assert 0 < scale; + if (0 < scale && scale != 1) { + bounds.setSize((int) (bounds.getWidth() / scale), + (int) (bounds.getWidth() / scale)); + } + return bounds; } } @@ -287,10 +294,19 @@ 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); + } + float scale = _getScaleFactor(splashPtr); + Graphics2D g = image.createGraphics(); + assert (0 < scale); + if (0 < scale) { + scale = 1; } - return image.createGraphics(); + g.scale(scale, scale); + return g; } } @@ -401,5 +417,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); };