Esme Povirk (@madewokherd) commented about dlls/gdiplus/region.c:
+ stat = region_element_to_spans(left, &spans_left, bounds); + + if (stat == Ok) + stat = region_element_to_spans(right, &spans_right, bounds); + + cur_left = spans_left.length ? &spans_left.spans[0] : NULL; + cur_right = spans_right.length ? &spans_right.spans[0] : NULL; + + for (y = bounds->top; stat == Ok && y < bounds->bottom; ++y) + { + for (x = bounds->left; stat == Ok && x < bounds->right; ) + { + /* Update the current left and right spans */ + + if (cur_left && (x >= cur_left->x[1] || y > cur_left->y)) + cur_left = (++i_left < spans_left.length) ? &spans_left.spans[i_left] : NULL; This seems wrong in the case where `x > cur_left->x && y < cur_left->y`
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10359#note_134142