We used to have a sign-inversion like this in our cairo backend code: https://searchfox.org/mozilla-central/rev/0b6a214452a91745638b03d71da86ebe45e34efe/gfx/cairo/cairo/src/cairo-win32-surface.c#1892-1893 This was previously fixed (by me!) back in bug 454098, but in the process of updating cairo the change got lost as the code had moved around and so our old patch file no longer applied. (I'll see if I can get the standalone test program from that bug working again, and file the issue upstream.) Original Revision: https://phabricator.services.mozilla.com/D254737 Differential Revision: https://phabricator.services.mozilla.com/D254931
14 lines
681 B
Diff
14 lines
681 B
Diff
diff --git a/gfx/cairo/cairo/src/win32/cairo-win32-surface.c b/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
|
|
--- a/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
|
|
+++ b/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
|
|
@@ -347,7 +347,8 @@ cairo_int_status_t
|
|
next_logical_y = _cairo_lround (next_user_y);
|
|
|
|
dxy_buf[j] = _cairo_lround (next_logical_x - logical_x);
|
|
- dxy_buf[j+1] = _cairo_lround (next_logical_y - logical_y);
|
|
+ /* Note that GDI coordinate system is inverted! */
|
|
+ dxy_buf[j+1] = _cairo_lround (logical_y - next_logical_y);
|
|
|
|
logical_x = next_logical_x;
|
|
logical_y = next_logical_y;
|