diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index 20cbde4c6..fcc9a0057 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -1095,13 +1095,17 @@ sync_actor_stacking (MetaCompScreen *info)
     }
 
   /* reorder the actors by lowering them in turn to the bottom of the stack.
-   * windows first, then background */
+   * windows first, then background.
+   *
+   * We reorder the actors even if they're not parented to the window group,
+   * to allow stacking to work with intermediate actors (eg during effects)
+   */
   for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev)
     {
-      ClutterActor *actor = tmp->data;
+      ClutterActor *actor = tmp->data, *parent;
 
-      if (clutter_actor_get_parent (actor) == info->window_group)
-        clutter_actor_set_child_below_sibling (info->window_group, actor, NULL);
+      parent = clutter_actor_get_parent (actor);
+      clutter_actor_set_child_below_sibling (parent, actor, NULL);
     }
 
   /* we prepended the backgrounds above so the last actor in the list
@@ -1109,10 +1113,10 @@ sync_actor_stacking (MetaCompScreen *info)
    */
   for (tmp = backgrounds; tmp != NULL; tmp = tmp->next)
     {
-      ClutterActor *actor = tmp->data;
+      ClutterActor *actor = tmp->data, *parent;
 
-      if (clutter_actor_get_parent (actor) == info->window_group)
-        clutter_actor_set_child_below_sibling (info->window_group, actor, NULL);
+      parent = clutter_actor_get_parent (actor);
+      clutter_actor_set_child_below_sibling (parent, actor, NULL);
     }
   g_list_free (backgrounds);
 }