FULL PRODUCT VERSION :
1.8.0_131-b11
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Versions 10.0.14393]
A DESCRIPTION OF THE PROBLEM :
java.exe contains a manifest file that, amongst other things, sets 'dpi aware' to 'true'. Something like this:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>True/PM</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</asmv1:assembly>
Thus when you run an app using java.exe you get correct scaling behaviour on high DPI displays. However if you then package the app into an exe file, this file has no manifest. So 'dpi aware' is not set, and the scaling behaviour is wrong.
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Work around is to manually use the mt.exe tool to copy the manifest from java.exe to your exe.