diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java
index 07d0796..4d86647 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java
@@ -58,18 +58,6 @@
 
     private static final Rect sTempRect = new Rect();
 
-    private final OnScaleUpdateListener mTaskViewIconScaleListener = new OnScaleUpdateListener() {
-        @Override
-        public void onScaleUpdate(float scale) {
-            final Drawable drawable = mTaskIcon.getDrawable();
-            if (drawable instanceof FastBitmapDrawable) {
-                if (scale != ((FastBitmapDrawable) drawable).getScale()) {
-                    mMenuIconDrawable.setScale(scale);
-                }
-            }
-        }
-    };
-
     private final OnScaleUpdateListener mMenuIconScaleListener = new OnScaleUpdateListener() {
         @Override
         public void onScaleUpdate(float scale) {
@@ -86,14 +74,10 @@
     private static final int REVEAL_OPEN_DURATION = 150;
     private static final int REVEAL_CLOSE_DURATION = 100;
 
-    private final float mThumbnailTopMargin;
     private BaseDraggingActivity mActivity;
-    private TextView mTaskName;
-    private IconView mTaskIcon;
     private AnimatorSet mOpenCloseAnimator;
     private TaskView mTaskView;
     private LinearLayout mOptionLayout;
-    private FastBitmapDrawable mMenuIconDrawable;
 
     public TaskMenuView(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
@@ -103,14 +87,11 @@
         super(context, attrs, defStyleAttr);
 
         mActivity = BaseDraggingActivity.fromContext(context);
-        mThumbnailTopMargin = getResources().getDimension(R.dimen.task_thumbnail_top_margin);
     }
 
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mTaskName = findViewById(R.id.task_name);
-        mTaskIcon = findViewById(R.id.task_icon);
         mOptionLayout = findViewById(R.id.menu_option_layout);
     }
 
@@ -142,22 +123,13 @@
     }
 
     @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-
-        // Remove all scale listeners when menu is removed
-        mTaskView.getIconView().removeUpdateScaleListener(mTaskViewIconScaleListener);
-        mTaskIcon.removeUpdateScaleListener(mMenuIconScaleListener);
-    }
-
-    @Override
     protected boolean isOfType(int type) {
         return (type & TYPE_TASK_MENU) != 0;
     }
 
     public void setPosition(float x, float y) {
         setX(x);
-        setY(y + mThumbnailTopMargin);
+        setY(y);
     }
 
     public static TaskMenuView showForTask(TaskView taskView) {
@@ -180,23 +152,6 @@
     }
 
     private void addMenuOptions(TaskView taskView) {
-        Drawable icon = taskView.getTask().icon.getConstantState().newDrawable();
-        mTaskIcon.setDrawable(icon);
-        mTaskIcon.setOnClickListener(v -> close(true));
-        mTaskName.setText(TaskUtils.getTitle(getContext(), taskView.getTask()));
-        mTaskName.setOnClickListener(v -> close(true));
-
-        // Set the icons to match scale by listening to each other's changes
-        mMenuIconDrawable = icon instanceof FastBitmapDrawable ? (FastBitmapDrawable) icon : null;
-        taskView.getIconView().addUpdateScaleListener(mTaskViewIconScaleListener);
-        mTaskIcon.addUpdateScaleListener(mMenuIconScaleListener);
-
-        // Move the icon and text up half an icon size to lay over the TaskView
-        LinearLayout.LayoutParams params =
-                (LinearLayout.LayoutParams) mTaskIcon.getLayoutParams();
-        params.topMargin = (int) -mThumbnailTopMargin;
-        mTaskIcon.setLayoutParams(params);
-
         final BaseDraggingActivity activity = BaseDraggingActivity.fromContext(getContext());
         final List<TaskSystemShortcut> shortcuts =
                 TaskOverlayFactory.INSTANCE.get(getContext()).getEnabledShortcuts(taskView);
@@ -221,12 +176,11 @@
         mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect);
         Rect insets = mActivity.getDragLayer().getInsets();
         BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams();
-        params.width = taskView.getMeasuredWidth();
-        params.gravity = Gravity.START;
+        params.gravity = Gravity.END;
         setLayoutParams(params);
         setScaleX(taskView.getScaleX());
         setScaleY(taskView.getScaleY());
-        setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top);
+        setY(sTempRect.top - insets.top);
     }
 
     private void animateOpen() {
@@ -274,9 +228,10 @@
     }
 
     private RoundedRectRevealOutlineProvider createOpenCloseOutlineProvider() {
+        final int width = getWidth();
         float radius = Themes.getDialogCornerRadius(getContext());
-        Rect fromRect = new Rect(0, 0, getWidth(), 0);
-        Rect toRect = new Rect(0, 0, getWidth(), getHeight());
+        Rect fromRect = new Rect(width, 0, width, 0);
+        Rect toRect = new Rect(0, 0, width, getHeight());
         return new RoundedRectRevealOutlineProvider(radius, radius, fromRect, toRect);
     }
 
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
index 51802df..6d81661 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
@@ -44,7 +44,9 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 import android.view.accessibility.AccessibilityNodeInfo;
-import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.android.launcher3.BaseDraggingActivity;
@@ -80,7 +82,7 @@
 /**
  * A task in the Recents view.
  */
-public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
+public class TaskView extends LinearLayout implements PageCallbacks, Reusable {
 
     private static final String TAG = TaskView.class.getSimpleName();
 
@@ -151,7 +153,10 @@
     private Task mTask;
     private TaskThumbnailView mSnapshotView;
     private TaskMenuView mMenuView;
+    private View mTaskInfoContainer;
     private IconView mIconView;
+    private TextView mNameView;
+    private ImageView mMenuIconView;
     private final DigitalWellBeingToast mDigitalWellBeingToast;
     private float mCurveScale;
     private float mFullscreenProgress;
@@ -223,7 +228,10 @@
     protected void onFinishInflate() {
         super.onFinishInflate();
         mSnapshotView = findViewById(R.id.snapshot);
+        mTaskInfoContainer = findViewById(R.id.task_info_container);
         mIconView = findViewById(R.id.icon);
+        mNameView = findViewById(R.id.name);
+        mMenuIconView = findViewById(R.id.menu);
     }
 
     public TaskMenuView getMenuView() {
@@ -350,6 +358,8 @@
             mIconLoadRequest = iconCache.updateIconInBackground(mTask,
                     (task) -> {
                         setIcon(task.icon);
+                        setName(task);
+                        setMenu(true);
                         if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask()) {
                             getRecentsView().updateLiveTileIcon(task.icon);
                         }
@@ -358,6 +368,8 @@
         } else {
             mSnapshotView.setThumbnail(null, null);
             setIcon(null);
+            setName(null);
+            setMenu(false);
             // Reset the task thumbnail reference as well (it will be fetched from the cache or
             // reloaded next time we need it)
             mTask.thumbnail = null;
@@ -387,17 +399,24 @@
     }
 
     private void setIcon(Drawable icon) {
-        if (icon != null) {
-            mIconView.setDrawable(icon);
-            mIconView.setOnClickListener(v -> showTaskMenu(Touch.TAP));
-            mIconView.setOnLongClickListener(v -> {
+        mIconView.setDrawable(icon);
+    }
+
+    private void setName(Task task) {
+        mNameView.setText(task == null ?
+                "" : TaskUtils.getTitle(getContext(), task));
+    }
+
+    private void setMenu(boolean enable) {
+        if (enable) {
+            mMenuIconView.setOnClickListener(v -> showTaskMenu(Touch.TAP));
+            mMenuIconView.setOnLongClickListener(v -> {
                 requestDisallowInterceptTouchEvent(true);
                 return showTaskMenu(Touch.LONGPRESS);
             });
         } else {
-            mIconView.setDrawable(null);
-            mIconView.setOnClickListener(null);
-            mIconView.setOnLongClickListener(null);
+            mMenuIconView.setOnClickListener(null);
+            mMenuIconView.setOnLongClickListener(null);
         }
     }
 
@@ -412,8 +431,7 @@
         float upperClamp = invert ? 1 : iconScalePercentage;
         float scale = Interpolators.clampToProgress(FAST_OUT_SLOW_IN, lowerClamp, upperClamp)
                 .getInterpolation(progress);
-        mIconView.setScaleX(scale);
-        mIconView.setScaleY(scale);
+        mTaskInfoContainer.setAlpha(scale);
 
         mFooterVerticalOffset = 1.0f - scale;
         for (FooterWrapper footer : mFooters) {
@@ -499,7 +517,8 @@
         }
 
         if (mMenuView != null) {
-            mMenuView.setPosition(getX() - getRecentsView().getScrollX(), getY());
+            mMenuView.setPosition(getX() - getRecentsView().getScrollX() +
+                    getWidth() - (int) mMenuView.getWidth(), getY());
             mMenuView.setScaleX(getScaleX());
             mMenuView.setScaleY(getScaleY());
         }
@@ -794,7 +813,7 @@
         }
         mFullscreenProgress = progress;
         boolean isFullscreen = mFullscreenProgress > 0;
-        mIconView.setVisibility(progress < 1 ? VISIBLE : INVISIBLE);
+        mTaskInfoContainer.setVisibility(progress < 1 ? VISIBLE : INVISIBLE);
         setClipChildren(!isFullscreen);
         setClipToPadding(!isFullscreen);
 
diff --git a/quickstep/res/drawable/ic_task_menu.xml b/quickstep/res/drawable/ic_task_menu.xml
new file mode 100644
index 0000000..044889d
--- /dev/null
+++ b/quickstep/res/drawable/ic_task_menu.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0"
+    android:tint="?attr/workspaceTextColor">
+
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" />
+</vector>
diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml
index 60cfa0c..468aa9d 100644
--- a/quickstep/res/layout/task.xml
+++ b/quickstep/res/layout/task.xml
@@ -18,20 +18,55 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:defaultFocusHighlightEnabled="false"
-    android:elevation="4dp"
+    android:orientation="vertical"
     android:focusable="true">
 
+    <RelativeLayout
+        android:id="@+id/task_info_container"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/task_thumbnail_icon_size"
+        android:orientation="horizontal"
+        android:layout_marginBottom="8dp"
+        android:focusable="false">
+
+        <com.android.quickstep.views.IconView
+            android:id="@+id/icon"
+            android:layout_width="@dimen/task_thumbnail_icon_size"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:layout_alignParentEnd="true"
+            android:importantForAccessibility="no"/>
+
+        <ImageView
+            android:id="@+id/menu"
+            android:layout_width="@dimen/task_thumbnail_icon_size"
+            android:layout_height="match_parent"
+            android:layout_alignParentStart="true"
+            android:layout_centerVertical="true"
+            android:padding="6dp"
+            android:background="?android:attr/selectableItemBackground"
+            android:src="@drawable/ic_task_menu" />
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingStart="8dp"
+            android:paddingEnd="8dp"
+            android:layout_toStartOf="@id/icon"
+            android:layout_marginStart="@dimen/task_thumbnail_icon_size"
+            android:focusable="false"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:textColor="?attr/workspaceTextColor"
+            android:textSize="16sp"/>
+    </RelativeLayout>
+
     <com.android.quickstep.views.TaskThumbnailView
         android:id="@+id/snapshot"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginTop="@dimen/task_thumbnail_top_margin"/>
+        android:elevation="4dp" />
 
-    <com.android.quickstep.views.IconView
-        android:id="@+id/icon"
-        android:layout_width="@dimen/task_thumbnail_icon_size"
-        android:layout_height="@dimen/task_thumbnail_icon_size"
-        android:layout_gravity="top|center_horizontal"
-        android:focusable="false"
-        android:importantForAccessibility="no"/>
-</com.android.quickstep.views.TaskView>
\ No newline at end of file
+</com.android.quickstep.views.TaskView>
diff --git a/quickstep/res/layout/task_menu.xml b/quickstep/res/layout/task_menu.xml
index 098b34f..d504b7f 100644
--- a/quickstep/res/layout/task_menu.xml
+++ b/quickstep/res/layout/task_menu.xml
@@ -16,39 +16,19 @@
 -->
 <com.android.quickstep.views.TaskMenuView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:animateLayoutChanges="true"
     android:background="@drawable/task_menu_bg"
-    android:paddingBottom="@dimen/task_card_menu_shadow_height"
+    android:paddingBottom="@dimen/task_card_menu_option_vertical_padding"
+    android:paddingTop="@dimen/task_card_menu_option_vertical_padding"
     android:orientation="vertical"
     android:visibility="invisible">
 
-    <com.android.quickstep.views.IconView
-      android:id="@+id/task_icon"
-      android:layout_width="@dimen/task_thumbnail_icon_size"
-      android:layout_height="@dimen/task_thumbnail_icon_size"
-      android:layout_gravity="top|center_horizontal"
-      android:layout_marginBottom="@dimen/deep_shortcut_drawable_padding"
-      android:focusable="false"
-      android:importantForAccessibility="no" />
-
-    <TextView
-        android:id="@+id/task_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center_horizontal"
-        android:layout_marginBottom="16dp"
-        android:textSize="12sp"/>
-
     <LinearLayout
         android:id="@+id/menu_option_layout"
         style="@style/TaskMenu"
-        android:divider="@drawable/all_apps_divider"
-        android:showDividers="beginning"
-        android:paddingStart="@dimen/task_card_menu_horizontal_padding"
-        android:paddingEnd="@dimen/task_card_menu_horizontal_padding"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
 
-</com.android.quickstep.views.TaskMenuView>
\ No newline at end of file
+</com.android.quickstep.views.TaskMenuView>
diff --git a/quickstep/res/layout/task_view_menu_option.xml b/quickstep/res/layout/task_view_menu_option.xml
index 2256315..0ecd50d 100644
--- a/quickstep/res/layout/task_view_menu_option.xml
+++ b/quickstep/res/layout/task_view_menu_option.xml
@@ -18,10 +18,13 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/TaskMenu.Option"
     android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:orientation="vertical"
+    android:layout_gravity="center_horizontal|start"
+    android:gravity="center"
+    android:orientation="horizontal"
     android:paddingTop="@dimen/task_card_menu_option_vertical_padding"
     android:paddingBottom="@dimen/task_card_menu_option_vertical_padding"
+    android:paddingStart="@dimen/task_card_menu_option_horizontal_padding"
+    android:paddingEnd="@dimen/task_card_menu_option_horizontal_padding"
     android:background="?android:attr/selectableItemBackground"
     android:theme="@style/PopupItem" >
 
@@ -29,22 +32,18 @@
       android:id="@+id/icon"
       android:layout_width="@dimen/system_shortcut_icon_size"
       android:layout_height="@dimen/system_shortcut_icon_size"
-      android:layout_marginTop="@dimen/system_shortcut_header_icon_padding"
-      android:layout_marginBottom="@dimen/deep_shortcut_drawable_padding"
-      android:layout_gravity="center_horizontal"
+      android:layout_margin="@dimen/deep_shortcut_drawable_padding"
       android:backgroundTint="?android:attr/textColorTertiary"/>
 
     <TextView
         style="@style/BaseIcon"
         android:id="@+id/text"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:paddingBottom="@dimen/popup_padding_end"
+        android:paddingEnd="@dimen/deep_shortcut_drawable_padding"
         android:textSize="12sp"
         android:textColor="?android:attr/textColorPrimary"
         android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:gravity="center_horizontal"
-        android:layout_gravity="center_horizontal"
         android:focusable="false" />
 
 </LinearLayout>
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 78424ca..2c4a114 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -16,9 +16,9 @@
 
 <resources>
 
-    <dimen name="task_thumbnail_top_margin">24dp</dimen>
-    <dimen name="task_thumbnail_half_top_margin">12dp</dimen>
-    <dimen name="task_thumbnail_icon_size">48dp</dimen>
+    <dimen name="task_thumbnail_top_margin">44dp</dimen>
+    <dimen name="task_thumbnail_half_top_margin">22dp</dimen>
+    <dimen name="task_thumbnail_icon_size">36dp</dimen>
     <!-- For screens without rounded corners -->
     <dimen name="task_corner_radius_small">2dp</dimen>
 
@@ -53,6 +53,7 @@
          in various configurations -->
     <dimen name="task_card_vert_space">40dp</dimen>
     <dimen name="task_card_menu_option_vertical_padding">8dp</dimen>
+    <dimen name="task_card_menu_option_horizontal_padding">8dp</dimen>
     <dimen name="task_card_menu_shadow_height">3dp</dimen>
     <dimen name="task_card_menu_horizontal_padding">0dp</dimen>
     <dimen name="portrait_task_card_horz_space">136dp</dimen>
diff --git a/quickstep/res/values/styles.xml b/quickstep/res/values/styles.xml
index bb364ff..ecf8c8d 100644
--- a/quickstep/res/values/styles.xml
+++ b/quickstep/res/values/styles.xml
@@ -22,7 +22,7 @@
 
     <!-- Task Menu Option layout styles. -->
     <style name="TaskMenu.Option">
-        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
     </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/quickstep/src/com/android/quickstep/util/LayoutUtils.java b/quickstep/src/com/android/quickstep/util/LayoutUtils.java
index 2e118b4..a3bc2be 100644
--- a/quickstep/src/com/android/quickstep/util/LayoutUtils.java
+++ b/quickstep/src/com/android/quickstep/util/LayoutUtils.java
@@ -105,6 +105,8 @@
         }
 
         float topIconMargin = res.getDimension(R.dimen.task_thumbnail_top_margin);
+        // Add extra spacing for the icon + title
+        topIconMargin += res.getDimension(R.dimen.task_thumbnail_icon_size);
         float paddingVert = res.getDimension(R.dimen.task_card_vert_space);
 
         // Note this should be same as dp.availableWidthPx and dp.availableHeightPx unless
