diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 92a31cc..f523376 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -26,7 +26,6 @@
     <color name="notification_panel_solid_background">#ff000000</color>
     <drawable name="status_bar_recents_app_thumbnail_background">#88000000</drawable>
     <color name="status_bar_recents_app_label_color">#ffffffff</color>
-    <color name="status_bar_recents_focus_color">#ff009688</color>
     <drawable name="status_bar_notification_row_background_color">#ff090909</drawable>
     <color name="notification_list_shadow_top">#80000000</color>
     <drawable name="recents_callout_line">#99ffffff</drawable>
@@ -57,6 +56,8 @@
     <!-- Tint color for the content on the notification overflow card. -->
     <color name="keyguard_overflow_content_color">#ff686868</color>
 
+    <!-- The focus color for a task. -->
+    <color name="recents_focus_color">#ff009688</color>
     <!-- The default recents task bar background color. -->
     <color name="recents_task_bar_default_background_color">#ffe6e6e6</color>
     <!-- The recents task bar light text color to be drawn on top of dark backgrounds. -->
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 03ea73c..11ae070 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -244,6 +244,9 @@
     <!-- The height of the search bar space. -->
     <dimen name="recents_search_bar_space_height">64dp</dimen>
 
+    <!-- Size of border for focus state -->
+    <dimen name="recents_border_size">6dip</dimen>
+
     <!-- The side padding for the task stack as a percentage of the width. -->
     <item name="recents_stack_width_padding_percentage" format="float" type="dimen">0.03333</item>
 
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index 571a9ef..8c49ff4 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -1310,7 +1310,8 @@
         RecentsTaskLoader.getInstance().loadTaskData(task);
 
         // If the doze trigger has already fired, then update the state for this task view
-        if (mConfig.multiStackEnabled || mUIDozeTrigger.hasTriggered()) {
+        if (mConfig.launchedWithAltTab ||
+                mConfig.multiStackEnabled || mUIDozeTrigger.hasTriggered()) {
             tv.setNoUserInteractionState();
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
index d67ea46..f3be678 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
@@ -22,6 +22,7 @@
 import android.animation.ValueAnimator;
 import android.content.Context;
 import android.graphics.*;
+import android.graphics.Bitmap.Config;
 import android.util.AttributeSet;
 import android.view.accessibility.AccessibilityManager;
 import android.view.View;
@@ -83,7 +84,8 @@
     float mFocusProgress;
     Paint mFocusPaint = new Paint();
     int mFocusColor = 0xff009688;
-    int mFocusAlpha = 0x50;
+    int mFocusAlpha = 0x40;
+    int mFocusBorderAlpha = 0xde;
     static Interpolator sFocusInInterpolator = new OvershootInterpolator(2);
     static Interpolator sFocusInRadiusInterpolator = new DecelerateInterpolator();
     static Interpolator sFocusOutInterpolator = new DecelerateInterpolator();
@@ -95,6 +97,7 @@
     int mFocusInCircleAlpha;
     int mFocusOutFillAlpha;
     boolean mFocusAnimatorWasTriggered;
+    int mFocusBorderSize;
 
     // Optimizations
     ValueAnimator.AnimatorUpdateListener mUpdateDimListener =
@@ -139,8 +142,10 @@
         });
 
         mFocusColor =
-                context.getResources().getColor(R.color.status_bar_recents_focus_color);
+                context.getResources().getColor(R.color.recents_focus_color);
         mFocusPaint.setColor(mFocusColor);
+        mFocusBorderSize =
+                context.getResources().getDimensionPixelSize(R.dimen.recents_border_size);
     }
 
     /** Set callback */
@@ -557,6 +562,19 @@
 
     @Override
     public void dispatchDraw(Canvas canvas) {
+        if (mIsFocused && mFocusAnimatorWasTriggered) {
+            canvas.save(Canvas.CLIP_SAVE_FLAG);
+            mFocusPaint.setAlpha(mFocusBorderAlpha);
+            canvas.clipRect(-mFocusBorderSize, -mFocusBorderSize,
+                    getWidth() + mFocusBorderSize, getHeight() + mFocusBorderSize,
+                    Region.Op.REPLACE);
+            canvas.drawRoundRect(-mFocusBorderSize, -mFocusBorderSize,
+                    getWidth() + mFocusBorderSize, getHeight() + mFocusBorderSize,
+                    mConfig.taskViewRoundedCornerRadiusPx,
+                    mConfig.taskViewRoundedCornerRadiusPx, mFocusPaint);
+            canvas.restore();
+        }
+
         super.dispatchDraw(canvas);
 
         if (mFocusAnimatorWasTriggered) {
@@ -588,6 +606,7 @@
             mFocusInCircleAlpha = (int) (mFocusAlpha * interpolatedProgress);
             mFocusInFillAlpha =
                     (mFocusAlpha / 4) + (int) ((mFocusAlpha / 2) * interpolatedProgress);
+            mFocusBorderAlpha = mFocusAlpha + (int) ((mFocusAlpha * 1.5f) * interpolatedProgress);
         } else {
             final float interpolatedProgress = sFocusOutInterpolator.getInterpolation(progress);
             mFocusOutFillAlpha = (int) (mFocusAlpha * (1 - interpolatedProgress));
