diff --git a/go/quickstep/src/com/android/quickstep/TaskAdapter.java b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
index 6f75629..4f2b422 100644
--- a/go/quickstep/src/com/android/quickstep/TaskAdapter.java
+++ b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
@@ -146,7 +146,7 @@
                 });
                 mLoader.loadTaskThumbnail(task, () -> {
                     if (Objects.equals(Optional.of(task), taskHolder.getTask())) {
-                        taskHolder.getTaskItemView().setThumbnail(task.thumbnail.thumbnail);
+                        taskHolder.getTaskItemView().setThumbnail(task.thumbnail);
                     }
                 });
                 break;
diff --git a/go/quickstep/src/com/android/quickstep/TaskHolder.java b/go/quickstep/src/com/android/quickstep/TaskHolder.java
index 5755df4..49b6aaa 100644
--- a/go/quickstep/src/com/android/quickstep/TaskHolder.java
+++ b/go/quickstep/src/com/android/quickstep/TaskHolder.java
@@ -15,8 +15,6 @@
  */
 package com.android.quickstep;
 
-import android.graphics.Bitmap;
-
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
@@ -58,12 +56,11 @@
      */
     public void bindTask(@NonNull Task task, boolean willAnimate) {
         mTask = task;
-        Bitmap thumbnail = (task.thumbnail != null) ? task.thumbnail.thumbnail : null;
         if (willAnimate) {
-            mTaskItemView.startContentAnimation(task.icon, thumbnail, task.titleDescription);
+            mTaskItemView.startContentAnimation(task.icon, task.thumbnail, task.titleDescription);
         } else {
             mTaskItemView.setIcon(task.icon);
-            mTaskItemView.setThumbnail(thumbnail);
+            mTaskItemView.setThumbnail(task.thumbnail);
             mTaskItemView.setLabel(task.titleDescription);
         }
     }
diff --git a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
index b7ed5b5..b8c482d 100644
--- a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
+++ b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
@@ -125,7 +125,7 @@
                 Task task = optTask.get();
                 // Update thumbnail on the task.
                 task.thumbnail = thumbnailData;
-                taskView.setThumbnail(thumbnailData.thumbnail);
+                taskView.setThumbnail(thumbnailData);
                 return task;
             }
         }
diff --git a/go/quickstep/src/com/android/quickstep/views/TaskItemView.java b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java
index 7d9916e..0b5ed56 100644
--- a/go/quickstep/src/com/android/quickstep/views/TaskItemView.java
+++ b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java
@@ -18,9 +18,8 @@
 import static com.android.quickstep.views.TaskLayoutUtils.getTaskHeight;
 
 import android.content.Context;
+import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.FloatProperty;
@@ -33,6 +32,8 @@
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.R;
+import com.android.quickstep.ThumbnailDrawable;
+import com.android.systemui.shared.recents.model.ThumbnailData;
 
 /**
  * View representing an individual task item with the icon + thumbnail adjacent to the task label.
@@ -132,10 +133,10 @@
     /**
      * Set the task thumbnail for the task. Sets to a default thumbnail if null.
      *
-     * @param thumbnail task thumbnail for the task
+     * @param thumbnailData task thumbnail data for the task
      */
-    public void setThumbnail(@Nullable Bitmap thumbnail) {
-        mThumbnailDrawable.setCurrentDrawable(getSafeThumbnail(thumbnail));
+    public void setThumbnail(@Nullable ThumbnailData thumbnailData) {
+        mThumbnailDrawable.setCurrentDrawable(getSafeThumbnail(thumbnailData));
     }
 
     public View getThumbnailView() {
@@ -151,8 +152,8 @@
      * @param endThumbnail the thumbnail to animate to
      * @param endLabel the label to animate to
      */
-    public void startContentAnimation(@Nullable Drawable endIcon, @Nullable Bitmap endThumbnail,
-            @Nullable String endLabel) {
+    public void startContentAnimation(@Nullable Drawable endIcon,
+            @Nullable ThumbnailData endThumbnail, @Nullable String endLabel) {
         mIconDrawable.startNewTransition(getSafeIcon(endIcon));
         mThumbnailDrawable.startNewTransition(getSafeThumbnail(endThumbnail));
         // TODO: Animation for label
@@ -171,12 +172,27 @@
         return (icon != null) ? icon : mDefaultIcon;
     }
 
-    private @NonNull Drawable getSafeThumbnail(@Nullable Bitmap thumbnail) {
-        return (thumbnail != null) ? new BitmapDrawable(getResources(), thumbnail)
-                                   : mDefaultThumbnail;
+    private @NonNull Drawable getSafeThumbnail(@Nullable ThumbnailData thumbnailData) {
+        if (thumbnailData == null || thumbnailData.thumbnail == null) {
+            return mDefaultThumbnail;
+        }
+        int orientation = getResources().getConfiguration().orientation;
+        return new ThumbnailDrawable(thumbnailData,  orientation /* requestedOrientation */);
     }
 
     private @NonNull String getSafeLabel(@Nullable String label) {
         return (label != null) ? label : DEFAULT_LABEL;
     }
+
+    @Override
+    protected void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        int layerCount = mThumbnailDrawable.getNumberOfLayers();
+        for (int i = 0; i < layerCount; i++) {
+            Drawable drawable = mThumbnailDrawable.getDrawable(i);
+            if (drawable instanceof ThumbnailDrawable) {
+                ((ThumbnailDrawable) drawable).setRequestedOrientation(newConfig.orientation);
+            }
+        }
+    }
 }
