I think we'll need to approach this differently. The Graphics object can have a clipping region, and we need to intersect the path with that region (this might be part of why the tests are failing). So we end up having to fill a region regardless. Possibly we should also intersect it with the bitmap bounds so we don't bother rendering areas outside of there. Given that, it probably makes more sense to do this in GdipFillRegion. I think this means we'll need to be able to do region combine operations on an edge list. Maybe an internal "rasterized region" structure could make sense for this? Maybe something like this: * type: empty, rect, alternate path, or winding path * bounding rectangle * edge_list (sorted) When I was planning to rework the region code, I thought I'd end up with something like that, but since the end result was going to be an HRGN, or a single pixel for the hit-testing functions, it didn't seem to make sense yet. It could also make sense to cache the rasterized version of a graphics object's clipping region + bounding rectangle. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10359#note_132663