As discussed in the [JBS issue](https://bugs.openjdk.java.net/browse/JDK-8199592), when snapping an already snapped value (either intentionally or by mistake), the result should be the same, otherwise we'll be jumping unnecessary from a valid pixel to another pixel.
This PR provides a fix to `snapSizeXX` methods used in `Region`, which ultimately use `Math.ceil`, by subtracting an epsilon value to scaled value before ceiling, to ensure snapping a snapped value gives the same value. A test to verify `snapSizeX` and `snapSizeY` with 1000 random values, and 6 different UI scales is provided. For the 1.0, 1.25, 1.5 and 2.0 UI scales, the current approach works fine. Only for 1.75 and the random 1.374562997 value fails (the test fails for around 2% of the values with 1.75 and around 10% with 1.374562997). With the proposed fix, it doesn't fail at all. ------------- Commit messages: - Subtract epsilon to scaled value before ceiling, to ensure snapping a snapped value gives the same value. Include test Changes: https://git.openjdk.java.net/jfx/pull/336/files Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=336&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8199592 Stats: 35 lines in 2 files changed: 34 ins; 0 del; 1 mod Patch: https://git.openjdk.java.net/jfx/pull/336.diff Fetch: git fetch https://git.openjdk.java.net/jfx pull/336/head:pull/336 PR: https://git.openjdk.java.net/jfx/pull/336