diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
index 84b90b9..27fb476 100644
--- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
+++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
@@ -16,6 +16,7 @@
 
 package com.android.quickstep;
 
+import android.app.WindowConfiguration;
 import android.content.Context;
 import android.graphics.Rect;
 import android.view.RemoteAnimationTarget;
@@ -123,7 +124,14 @@
             mRemoteTargetHandles = newHandles;
         }
 
+        boolean containsSplitTargets = Arrays.stream(targets.apps)
+                .anyMatch(remoteAnimationTarget ->
+                        remoteAnimationTarget.windowConfiguration.getWindowingMode()
+                                == WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW);
+
         if (mRemoteTargetHandles.length == 1) {
+            // Single fullscreen app
+
             // If we're not in split screen, the splitIds count doesn't really matter since we
             // should always hit this case.
             mRemoteTargetHandles[0].mTransformParams.setTargetSet(targets);
@@ -131,13 +139,29 @@
                 // Unclear why/when target.apps length == 0, but it sure does happen :(
                 mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(targets.apps[0], null);
             }
+        } else if (!containsSplitTargets) {
+            // Single App + Assistant
+            for (int i = 0; i < mRemoteTargetHandles.length; i++) {
+                mRemoteTargetHandles[i].mTransformParams.setTargetSet(targets);
+                mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(targets.apps[i], null);
+            }
         } else {
-            RemoteAnimationTarget topLeftTarget = targets.apps[0];
+            // Split apps (+ maybe assistant)
+            RemoteAnimationTarget topLeftTarget = Arrays.stream(targets.apps)
+                    .filter(remoteAnimationTarget ->
+                            remoteAnimationTarget.windowConfiguration.getWindowingMode()
+                                    == WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW)
+                    .findFirst().get();
 
             // Fetch the adjacent target for split screen.
             RemoteAnimationTarget bottomRightTarget = null;
-            for (int i = 1; i < targets.apps.length; i++) {
+            for (int i = 0; i < targets.apps.length; i++) {
                 final RemoteAnimationTarget target = targets.apps[i];
+                if (target.windowConfiguration.getWindowingMode() !=
+                        WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW ||
+                        target == topLeftTarget) {
+                    continue;
+                }
                 Rect topLeftBounds = getStartBounds(topLeftTarget);
                 Rect bounds = getStartBounds(target);
                 if (topLeftBounds.left > bounds.right || topLeftBounds.top > bounds.bottom) {
diff --git a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
index f8893bd..303a528 100644
--- a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
+++ b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
@@ -411,7 +411,7 @@
             // transitions, the animation leashes are reparented to an animation container so we
             // can bump layers as needed.
             builder.setLayer(mDrawsBelowRecents
-                    ? Integer.MIN_VALUE + 1
+                    ? Integer.MIN_VALUE + app.prefixOrderIndex
                     : ENABLE_SHELL_TRANSITIONS ? Integer.MAX_VALUE : 0);
         }
     }
