.
diff --git a/src/OT/Color/COLR/COLR.hh b/src/OT/Color/COLR/COLR.hh
index 717d2b4..6e46fa3 100644
--- a/src/OT/Color/COLR/COLR.hh
+++ b/src/OT/Color/COLR/COLR.hh
@@ -2437,8 +2437,13 @@
 {
   TRACE_PAINT (this);
 
+  c->funcs->push_inverse_root_transform (c->data, c->font);
   if (c->funcs->color_glyph (c->data, gid, c->font))
+  {
+    c->funcs->pop_transform (c->data);
     return;
+  }
+  c->funcs->pop_transform (c->data);
 
   const COLR *colr_table = c->get_colr_table ();
   const Paint *paint = colr_table->get_base_glyph_paint (gid);
diff --git a/src/hb-cairo.cc b/src/hb-cairo.cc
index 6c80dd5..f4f9f54 100644
--- a/src/hb-cairo.cc
+++ b/src/hb-cairo.cc
@@ -176,11 +176,19 @@
   hb_cairo_context_t *c = (hb_cairo_context_t *) paint_data;
   cairo_t *cr = c->cr;
 
+  cairo_save (cr);
+
+  hb_position_t x_scale, y_scale;
+  hb_font_get_scale (font, &x_scale, &y_scale);
+  cairo_scale (cr, x_scale, y_scale);
+
   cairo_glyph_t cairo_glyph = { glyph, 0, 0 };
   cairo_set_scaled_font (cr, c->scaled_font);
-  cairo_set_font_size (cr, hb_face_get_upem (hb_font_get_face (font)));
+  cairo_set_font_size (cr, 1);
   cairo_show_glyphs (cr, &cairo_glyph, 1);
 
+  cairo_restore (cr);
+
   return true;
 }
 
diff --git a/test/api/results/test-154 b/test/api/results/test-154
index 8b329cf..1a86fe3 100644
--- a/test/api/results/test-154
+++ b/test/api/results/test-154
@@ -1,10 +1,14 @@
-# random seed: R02S9ffd1e4fb7cd9c50371f61b259bb32b5
+# random seed: R02S33c307340a09918aefe09266feb15798
 # Start of hb tests
 # Start of paint tests
 # Start of ot tests
 start clip rectangle 0 500 500 1e+03
   start transform 1 0 0 1 0 0
+    start transform 1 0 -0 1 0 0
+    end transform
     start clip rectangle 100 100 900 900
+      start transform 1 0 -0 1 0 0
+      end transform
       start clip rectangle 0 0 1e+03 1e+03
         start transform 1 0 -0 1 0 0
           start clip glyph 2
diff --git a/test/api/test-paint.c b/test/api/test-paint.c
index 13b71c5..e1044ed 100644
--- a/test/api/test-paint.c
+++ b/test/api/test-paint.c
@@ -389,7 +389,7 @@
 
   /* Run
    *
-   * GENERATE_DATA=1 G_TEST_SRCDIR=./test/api ./build/test/api/test-ot-color -p TESTCASE > test/api/results/OUTPUT
+   * GENERATE_DATA=1 G_TEST_SRCDIR=./test/api ./build/test/api/test-paint -p TESTCASE > test/api/results/OUTPUT
    *
    * to produce the expected results file.
    */