1diff --git a/gfx/cairo/cairo/src/cairo-win32-surface.c b/gfx/cairo/cairo/src/cairo-win32-surface.c
2--- a/gfx/cairo/cairo/src/cairo-win32-surface.c
3+++ b/gfx/cairo/cairo/src/cairo-win32-surface.c
4@@ -1742,17 +1742,18 @@ _cairo_win32_surface_show_glyphs (void
5
6             cairo_matrix_transform_point(&device_to_logical,
7                                          &next_user_x, &next_user_y);
8
9             next_logical_x = _cairo_lround (next_user_x);
10             next_logical_y = _cairo_lround (next_user_y);
11
12             dxy_buf[j] = _cairo_lround (next_logical_x - logical_x);
13-            dxy_buf[j+1] = _cairo_lround (next_logical_y - logical_y);
14+            dxy_buf[j+1] = _cairo_lround (logical_y - next_logical_y);
15+                /* note that GDI coordinate system is inverted */
16
17             logical_x = next_logical_x;
18             logical_y = next_logical_y;
19         }
20     }
21
22     /* Using glyph indices for a Type 1 font does not work on a
23      * printer DC. The win32 printing surface will convert the the
24