Jeffrey Smith (@whydoubt) commented about dlls/gdiplus/graphicspath.c:
if (stat == Ok)
stat = GdipWidenPath(wide_path, pen, transform, 1.0);
- if (pen->unit == UnitPixel && graphics != NULL)
- {
if (stat == Ok)
stat = GdipInvertMatrix(transform);
if (stat == Ok)
stat = GdipTransformPath(wide_path, transform);
- }
stat = GdipWidenPath(wide_path, pen, transform, 0.25f);
if (stat == Ok)
stat = GdipIsVisiblePathPoint(wide_path, x, y, graphics, result);
It seem that with this change `GdipIsOutlineVisiblePathPoint` performs World -> Device space conversion on both the path and point. `GdipIsVisiblePathPoint` (once fixed) is _also_ going to perform a World -> Device space conversion. So I think either world-space path & point should be passed (as they are now), or NULL should be passed for graphics here to keep if from applying a space conversion. In the latter case, whatever fix is found to deal with the quirks identified there may need to be duplicated here.