diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 9dbec6d..6a37099 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -39,6 +39,7 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.FrameLayout;
 import android.widget.TextView;
+
 import com.android.internal.logging.MetricsLogger;
 import com.android.keyguard.KeyguardStatusView;
 import com.android.systemui.AutoReinflateContainer;
@@ -2291,6 +2292,12 @@
         setLaunchingAffordance(false);
     }
 
+    @Override
+    public void setAlpha(float alpha) {
+        super.setAlpha(alpha);
+        mNotificationStackScroller.setParentFadingOut(alpha != 1.0f);
+    }
+
     /**
      * Set whether we are currently launching an affordance. This is currently only set when
      * launched via a camera gesture.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 7364838..d0d21e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -3864,6 +3864,7 @@
                 mScrimController.forceHideScrims(true /* hide */);
                 updateMediaMetaData(false, true);
                 mNotificationPanel.setAlpha(1);
+                mStackScroller.setParentFadingOut(true);
                 mNotificationPanel.animate()
                         .alpha(0)
                         .setStartDelay(FADE_KEYGUARD_START_DELAY)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index ddded49..21d03fd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -53,7 +53,7 @@
 
     public void showMirror() {
         mBrightnessMirror.setVisibility(View.VISIBLE);
-        mStackScroller.setFadedOut(true);
+        mStackScroller.setFadingOut(true);
         mScrimBehind.animateViewAlpha(0.0f, TRANSITION_DURATION_OUT, Interpolators.ALPHA_OUT);
         outAnimation(mNotificationPanel.animate())
                 .withLayer();
@@ -67,7 +67,7 @@
                     @Override
                     public void run() {
                         mBrightnessMirror.setVisibility(View.INVISIBLE);
-                        mStackScroller.setFadedOut(false);
+                        mStackScroller.setFadingOut(false);
                     }
                 });
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 8913530..7a5b242 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -333,7 +333,8 @@
     private PorterDuffXfermode mSrcMode = new PorterDuffXfermode(PorterDuff.Mode.SRC);
     private boolean mPulsing;
     private boolean mDrawBackgroundAsSrc;
-    private boolean mFadedOut;
+    private boolean mFadingOut;
+    private boolean mParentFadingOut;
     private boolean mGroupExpandedForMeasure;
     private View mForcedScroll;
     private float mBackgroundFadeAmount = 1.0f;
@@ -470,7 +471,8 @@
     }
 
     private void updateSrcDrawing() {
-        mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && !mFadedOut ? mSrcMode : null);
+        mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && (!mFadingOut && !mParentFadingOut)
+                ? mSrcMode : null);
         invalidate();
     }
 
@@ -1871,7 +1873,7 @@
     }
 
     private void applyCurrentBackgroundBounds() {
-        if (!mFadedOut) {
+        if (!mFadingOut) {
             mScrimController.setExcludedBackgroundArea(mCurrentBounds);
         }
         invalidate();
@@ -3624,22 +3626,33 @@
         updateNotificationAnimationStates();
     }
 
-    public void setFadedOut(boolean fadingOut) {
-        if (fadingOut != mFadedOut) {
-            mFadedOut = fadingOut;
-            if (fadingOut) {
-                mScrimController.setExcludedBackgroundArea(null);
-            } else {
-                applyCurrentBackgroundBounds();
-            }
-            updateSrcDrawing();
+    public void setFadingOut(boolean fadingOut) {
+        if (fadingOut != mFadingOut) {
+            mFadingOut = fadingOut;
+            updateFadingState();
         }
     }
 
+    public void setParentFadingOut(boolean fadingOut) {
+        if (fadingOut != mParentFadingOut) {
+            mParentFadingOut = fadingOut;
+            updateFadingState();
+        }
+    }
+
+    private void updateFadingState() {
+        if (mFadingOut || mParentFadingOut || mAmbientState.isDark()) {
+            mScrimController.setExcludedBackgroundArea(null);
+        } else {
+            applyCurrentBackgroundBounds();
+        }
+        updateSrcDrawing();
+    }
+
     @Override
     public void setAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) {
         super.setAlpha(alpha);
-        setFadedOut(alpha != 1.0f);
+        setFadingOut(alpha != 1.0f);
     }
 
     /**
