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;