Regarding this change mentioned, I have seen that in the relevant commit the rectangles are being reduced by half their stroke thickness to mimic the software renderer.
I seem to remember that the software renderer was doing this only for Rectangle <int>, whereas with Rectangle <float> it was up to the caller to align the rectangle “in the middle of the pixels” in order for a thickness of 1 px to appear sharp and not blurred between at the boundary of two pixels.
I haven’t had time to check this with Direct2D, but have you checked that the Direct2D workaround you have implemented is consistent with the software renderer both in the case of Rectangle <int>andRectangle <float>?