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. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4165#note_49900