I think it boils down to the inconsistent behaviour of fillRect(int, int, int, int) on the windows software renderer.
g.fillRect (10, 2, 2, 2); g.fillRect (20.f, 2.f, 2.f, 2.f);