diff --git a/src/compositor/wayland_wrapper/qwlsurface.cpp b/src/compositor/wayland_wrapper/qwlsurface.cpp
index 4cadbb590c235c6cbfc550666efc5bc6313520b2..2b7f21aee31a3930867d3c9ab31f1943d717bd42 100644
--- a/src/compositor/wayland_wrapper/qwlsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlsurface.cpp
@@ -408,6 +408,14 @@ void Surface::surface_destroy_resource(Resource *)
         m_extendedSurface = 0;
     }
 
+    if (transientParent()) {
+        foreach (Surface *surface, compositor()->surfaces()) {
+            if (surface->transientParent() == this) {
+                surface->setTransientParent(0);
+            }
+        }
+    }
+
     m_destroyed = true;
     m_waylandSurface->destroy();
     emit m_waylandSurface->surfaceDestroyed();