diff --git a/gtk/inspector/focusoverlay.c b/gtk/inspector/focusoverlay.c
index d96181c19f..54231f5820 100644
--- a/gtk/inspector/focusoverlay.c
+++ b/gtk/inspector/focusoverlay.c
@@ -49,7 +49,6 @@ gtk_focus_overlay_snapshot (GtkInspectorOverlay *overlay,
   GtkFocusOverlay *self = GTK_FOCUS_OVERLAY (overlay);
   GtkWidget *focus;
   graphene_rect_t bounds;
-  double nx, ny;
 
   if (!GTK_IS_NATIVE (widget))
     return;
@@ -67,10 +66,6 @@ gtk_focus_overlay_snapshot (GtkInspectorOverlay *overlay,
   if (!gtk_widget_compute_bounds (focus, widget, &bounds))
     return;
 
-  gtk_native_get_surface_transform (GTK_NATIVE (widget), &nx, &ny);
-  bounds.origin.x += nx;
-  bounds.origin.y += ny;
-
   gtk_snapshot_append_color (snapshot, &self->color, &bounds);
 }
 
diff --git a/gtk/inspector/updatesoverlay.c b/gtk/inspector/updatesoverlay.c
index 46e1661b81..18f1087c16 100644
--- a/gtk/inspector/updatesoverlay.c
+++ b/gtk/inspector/updatesoverlay.c
@@ -172,6 +172,14 @@ gtk_updates_overlay_snapshot (GtkInspectorOverlay *overlay,
   GtkUpdate *draw;
   gint64 now;
   GList *l;
+  double native_x, native_y;
+
+  if (!GTK_IS_NATIVE (widget))
+    return;
+
+  /* The coordinates we're getting from GdkSurface API are in GdkSurface coordinate spaces,
+   * but we're snapshotting in widget space, so we need to transform */
+  gtk_native_get_surface_transform (GTK_NATIVE (widget), &native_x, &native_y);
 
   updates = gtk_update_overlay_lookup_for_widget (self, widget, TRUE);
   now = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
@@ -226,7 +234,8 @@ gtk_updates_overlay_snapshot (GtkInspectorOverlay *overlay,
           cairo_region_get_rectangle (draw->region, i, &rect);
           gtk_snapshot_append_color (snapshot,
                                      &(GdkRGBA) { 1, 0, 0, 0.4 * (1 - progress) },
-                                     &GRAPHENE_RECT_INIT(rect.x, rect.y, rect.width, rect.height));
+                                     &GRAPHENE_RECT_INIT(rect.x - native_x, rect.y - native_y,
+                                                         rect.width, rect.height));
         }
     }
 }
diff --git a/gtk/inspector/window.c b/gtk/inspector/window.c
index a06454407f..16431a7657 100644
--- a/gtk/inspector/window.c
+++ b/gtk/inspector/window.c
@@ -605,12 +605,15 @@ gtk_inspector_prepare_render (GtkWidget            *widget,
     {
       GtkSnapshot *snapshot;
       GList *l;
+      double native_x, native_y;
 
       snapshot = gtk_snapshot_new ();
       gtk_snapshot_append_node (snapshot, node);
 
+      gtk_native_get_surface_transform (GTK_NATIVE (widget), &native_x, &native_y);
+
       gtk_snapshot_save (snapshot);
-      gtk_snapshot_transform (snapshot, gtk_widget_get_transform (widget));
+      gtk_snapshot_translate (snapshot, &(graphene_point_t) { native_x, native_y });
 
       for (l = iw->overlays; l; l = l->next)
         {