diff --git a/res/layout/gradient_scrim.xml b/res/layout/gradient_scrim.xml
index c40c5fc..15516b0 100644
--- a/res/layout/gradient_scrim.xml
+++ b/res/layout/gradient_scrim.xml
@@ -26,6 +26,5 @@
         android:id="@+id/scrim_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:visibility="gone"
-        app:layout_ignoreInsets="true"/>
+        android:visibility="gone"/>
 </merge>
\ No newline at end of file
diff --git a/src/com/android/launcher3/graphics/ScrimView.java b/src/com/android/launcher3/graphics/ScrimView.java
index feb3f03..c102cab 100644
--- a/src/com/android/launcher3/graphics/ScrimView.java
+++ b/src/com/android/launcher3/graphics/ScrimView.java
@@ -29,10 +29,12 @@
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.Interpolator;
 
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 
-public class ScrimView extends View {
+public class ScrimView extends View implements DeviceProfile.LauncherLayoutChangeListener {
 
     private static final boolean DEBUG = false;
 
@@ -57,6 +59,10 @@
     private final Interpolator mAccelerator = new AccelerateInterpolator();
     private final Paint mDebugPaint = DEBUG ? new Paint() : null;
 
+    private int mPaddingLeft;
+    private int mPaddingRight;
+    private int mAlphaStart;
+
     public ScrimView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mMaskHeight = Utilities.pxFromDp(MASK_HEIGHT_DP, getResources().getDisplayMetrics());
@@ -75,6 +81,21 @@
     }
 
     @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        updatePaddingAndAlphaStart();
+        Launcher.getLauncher(getContext()).getDeviceProfile()
+                .addLauncherLayoutChangedListener(this);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        Launcher.getLauncher(getContext()).getDeviceProfile()
+                .removeLauncherLayoutChangedListener(this);
+    }
+
+    @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
         int width = MeasureSpec.getSize(widthMeasureSpec);
@@ -91,7 +112,8 @@
         setTranslationY(linTranslationY);
 
         if (APPLY_ALPHA) {
-            int alpha = 55 + (int) (200f * mAccelerator.getInterpolation(progress));
+            int alpha = mAlphaStart + (int) ((255f - mAlphaStart)
+                    * mAccelerator.getInterpolation(progress));
             mPaint.setAlpha(alpha);
             invalidate();
         }
@@ -99,8 +121,8 @@
 
     @Override
     protected void onDraw(Canvas canvas) {
-        mAlphaMaskRect.set(0, 0, getWidth(), mMaskHeight);
-        mFinalMaskRect.set(0, mMaskHeight, getWidth(), getHeight());
+        mAlphaMaskRect.set(mPaddingLeft, 0, getWidth() - mPaddingRight, mMaskHeight);
+        mFinalMaskRect.set(mPaddingLeft, mMaskHeight, getWidth() - mPaddingRight, getHeight());
         canvas.drawBitmap(sAlphaScrimMask, null, mAlphaMaskRect, mPaint);
         canvas.drawBitmap(sFinalScrimMask, null, mFinalMaskRect, mPaint);
 
@@ -111,4 +133,23 @@
         }
     }
 
+    @Override
+    public void onLauncherLayoutChanged() {
+        updatePaddingAndAlphaStart();
+        invalidate();
+    }
+
+    private void updatePaddingAndAlphaStart() {
+        DeviceProfile grid = Launcher.getLauncher(getContext()).getDeviceProfile();
+        if (grid.isVerticalBarLayout()) {
+            int[] padding = grid.getContainerPadding();
+            mPaddingLeft = padding[0] + grid.edgeMarginPx;
+            mPaddingRight = padding[1] + grid.edgeMarginPx;
+            mAlphaStart = 0;
+        } else {
+            mPaddingLeft = 0;
+            mPaddingRight = 0;
+            mAlphaStart = 55;
+        }
+    }
 }
