diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f05ef8c..53fc0c0 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7905,7 +7905,16 @@
                     + "LAYER_TYPE_SOFTWARE or LAYER_TYPE_HARDWARE");
         }
         
-        if (layerType == mLayerType) return;
+        if (layerType == mLayerType) {
+            if (layerType != LAYER_TYPE_NONE && paint != mLayerPaint) {
+                mLayerPaint = paint == null ? new Paint() : paint;
+                if (mParent instanceof ViewGroup) {
+                    ((ViewGroup) mParent).invalidate();
+                }
+                invalidate();
+            }
+            return;
+        }
 
         // Destroy any previous software drawing cache if needed
         switch (mLayerType) {
@@ -7931,9 +7940,11 @@
         }
 
         mLayerType = layerType;
-        mLayerPaint = mLayerType == LAYER_TYPE_NONE ? null : paint;
+        mLayerPaint = mLayerType == LAYER_TYPE_NONE ? null : (paint == null ? new Paint() : paint);
 
-        // TODO: Make sure we invalidate the parent's display list
+        if (mParent instanceof ViewGroup) {
+            ((ViewGroup) mParent).invalidate();
+        }
         invalidate();
     }
 
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index f6b6778..d1781cc 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2398,16 +2398,15 @@
                                 layerType != LAYER_TYPE_NONE) {
                             layerFlags |= Canvas.CLIP_TO_LAYER_SAVE_FLAG;
                         }
-                        if (layerType != LAYER_TYPE_NONE && child.mLayerPaint != null) {
+                        if (layerType != LAYER_TYPE_NONE) {
                             child.mLayerPaint.setAlpha(multipliedAlpha);
                         } else {
                             canvas.saveLayerAlpha(sx, sy, sx + cr - cl, sy + cb - ct,
                                     multipliedAlpha, layerFlags);
-                            layerSaved = true;
                         }
                     } else {
                         // Alpha is handled by the child directly, clobber the layer's alpha
-                        if (layerType != LAYER_TYPE_NONE && child.mLayerPaint != null) {
+                        if (layerType != LAYER_TYPE_NONE) {
                             child.mLayerPaint.setAlpha(255);
                         }
                         child.mPrivateFlags |= ALPHA_SET;
@@ -2433,7 +2432,7 @@
 
         if (hasNoCache) {
             boolean layerRendered = false;
-            if (!layerSaved && layerType == LAYER_TYPE_HARDWARE) {
+            if (layerType == LAYER_TYPE_HARDWARE) {
                 final HardwareLayer layer = child.getHardwareLayer(canvas);
                 if (layer != null && layer.isValid()) {
                     ((HardwareCanvas) canvas).drawHardwareLayer(layer, 0, 0, child.mLayerPaint);
@@ -2465,7 +2464,7 @@
             child.mPrivateFlags &= ~DIRTY_MASK;
             Paint cachePaint;
 
-            if (layerType == LAYER_TYPE_NONE || child.mLayerPaint == null) {
+            if (layerType == LAYER_TYPE_NONE) {
                 cachePaint = mCachePaint;
                 if (alpha < 1.0f) {
                     cachePaint.setAlpha((int) (alpha * 255));
@@ -2476,9 +2475,7 @@
                 }
             } else {
                 cachePaint = child.mLayerPaint;
-                if (alpha < 1.0f) {
-                    cachePaint.setAlpha((int) (alpha * 255));
-                }
+                cachePaint.setAlpha((int) (alpha * 255));
             }
             canvas.drawBitmap(cache, 0.0f, 0.0f, cachePaint);
         }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
index a0b1d78..e795f02 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
@@ -38,6 +38,8 @@
         setupList(R.id.list1);
         setupList(R.id.list2);
         setupList(R.id.list3);
+        
+        findViewById(R.id.list1).setAlpha(0.7f);
     }
 
     private void setupList(int listId) {
