diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index b149bb9..068eb9e 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -429,7 +429,7 @@
 
 void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque) {
     if (extensions.hasTiledRendering()) {
-        glStartTilingQCOM(x, y, width, height, GL_COLOR_BUFFER_BIT0_QCOM);
+        glStartTilingQCOM(x, y, width, height, opaque ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM);
     }
 }
 
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 9b9ca12..da0900a 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -175,7 +175,7 @@
     mSaveCount = 1;
 
     mSnapshot->setClip(left, top, right, bottom);
-    mDirtyClip = mOpaqueFrame = opaque;
+    mDirtyClip = opaque;
 
     // If we know that we are going to redraw the entire framebuffer,
     // perform a discard to let the driver know we don't need to preserve
@@ -189,7 +189,7 @@
     syncState();
 
     mTilingSnapshot = mSnapshot;
-    startTiling();
+    startTiling(mTilingSnapshot, true);
 
     if (!opaque) {
         mCaches.enableScissor();
@@ -213,16 +213,9 @@
     }
 }
 
-void OpenGLRenderer::startTiling() {
-    startTiling(mTilingSnapshot);
-}
-
-void OpenGLRenderer::startTiling(const sp<Snapshot>& s) {
-    bool opaque = mOpaqueFrame;
+void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
     Rect* clip = mTilingSnapshot->clipRect;
-
     if (s->flags & Snapshot::kFlagIsFboLayer) {
-        opaque = !s->layer->isBlend();
         clip = s->clipRect;
     }
 
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 10ba86e..4bbdde1 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -351,8 +351,7 @@
      * This method needs to be invoked every time getTargetFbo() is
      * bound again.
      */
-    void startTiling();
-    void startTiling(const sp<Snapshot>& snapshot);
+    void startTiling(const sp<Snapshot>& snapshot, bool opaque = false);
 
     /**
      * Tells the GPU that we are done drawing the frame or that we
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
index 0127396..eb8a0a9 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
@@ -45,10 +45,10 @@
 
         row1.addView(new LayerView(this, 0xffff0000), new LinearLayout.LayoutParams(
                 0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
-        row1.addView(new LayerView(this, 0xff00ff00), new LinearLayout.LayoutParams(
+        row1.addView(new LayerView(this, 0x0f00ff00), new LinearLayout.LayoutParams(
                 0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
 
-        row2.addView(new LayerView(this, 0xff0000ff), new LinearLayout.LayoutParams(
+        row2.addView(new LayerView(this, 0x0f0000ff), new LinearLayout.LayoutParams(
                 0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
         row2.addView(new LayerView(this, 0xffffff00), new LinearLayout.LayoutParams(
                 0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
