diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp
index e0f2ec43..5373275 100644
--- a/libs/hwui/GlopBuilder.cpp
+++ b/libs/hwui/GlopBuilder.cpp
@@ -35,6 +35,10 @@
     LOG_ALWAYS_FATAL_IF(stageFlag & mStageFlags, "Stage %d cannot be run twice"); \
     mStageFlags = static_cast<StageFlags>(mStageFlags | stageFlag)
 
+#define REQUIRE_STAGES(requiredFlags) \
+    LOG_ALWAYS_FATAL_IF((mStageFlags & requiredFlags) != requiredFlags, \
+            "not prepared for current stage")
+
 GlopBuilder::GlopBuilder(RenderState& renderState, Caches& caches, Glop* outGlop)
         : mRenderState(renderState)
         , mCaches(caches)
@@ -127,12 +131,14 @@
     }
 
     TRIGGER_STAGE(kFillStage);
+    REQUIRE_STAGES(kMeshStage);
 
     mOutGlop->fill.color = { alphaScale, alphaScale, alphaScale, alphaScale };
 
     const bool SWAP_SRC_DST = false;
     // TODO: account for texture blend
-    if (alphaScale < 1.0f) {
+    if (alphaScale < 1.0f
+            || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib)) {
         Blend::getFactors(SkXfermode::kSrcOver_Mode, SWAP_SRC_DST,
                 &mOutGlop->blend.src, &mOutGlop->blend.dst);
     } else {
@@ -143,6 +149,7 @@
 }
 GlopBuilder& GlopBuilder::setPaint(const SkPaint& paint, float alphaScale) {
     TRIGGER_STAGE(kFillStage);
+    REQUIRE_STAGES(kMeshStage);
 
     const SkShader* shader = paint.getShader();
     const SkColorFilter* colorFilter = paint.getColorFilter();
@@ -169,6 +176,7 @@
 
     mOutGlop->blend = { GL_ZERO, GL_ZERO };
     if (mOutGlop->fill.color.a < 1.0f
+            || (mOutGlop->mesh.vertexFlags & kAlpha_Attrib)
             || PaintUtils::isBlendedShader(shader)
             || PaintUtils::isBlendedColorFilter(colorFilter)
             || mode != SkXfermode::kSrcOver_Mode) {
@@ -242,7 +250,7 @@
 }
 
 void GlopBuilder::build() {
-    LOG_ALWAYS_FATAL_IF(mStageFlags != kAllStages, "glop not fully prepared!");
+    REQUIRE_STAGES(kAllStages);
 
     mDescription.modulate = mOutGlop->fill.color.a < 1.0f;
     mOutGlop->fill.program = mCaches.programCache.get(mDescription);
diff --git a/libs/hwui/renderstate/MeshState.cpp b/libs/hwui/renderstate/MeshState.cpp
index 5efac0e..585fb86 100644
--- a/libs/hwui/renderstate/MeshState.cpp
+++ b/libs/hwui/renderstate/MeshState.cpp
@@ -67,7 +67,11 @@
 }
 
 void MeshState::dump() {
-    ALOGD("MeshState vertices: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer);
+    ALOGD("MeshState VBOs: unitQuad %d, current %d", mUnitQuadBuffer, mCurrentBuffer);
+    ALOGD("MeshState vertices: vertex data %p, stride %d",
+            mCurrentPositionPointer, mCurrentPositionStride);
+    ALOGD("MeshState texCoord: data %p, stride %d",
+            mCurrentTexCoordsPointer, mCurrentTexCoordsStride);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/tests/main.cpp b/libs/hwui/tests/main.cpp
index 5f445f4..b6d2c4d 100644
--- a/libs/hwui/tests/main.cpp
+++ b/libs/hwui/tests/main.cpp
@@ -210,7 +210,7 @@
         renderer->drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode);
         renderer->insertReorderBarrier(true);
 
-        card = createCard(40, 40, 200, 200);
+        card = createCard(40, 40, 400, 400);
         renderer->drawRenderNode(card.get(), DUMMY, 0);
 
         renderer->insertReorderBarrier(false);
@@ -228,11 +228,10 @@
         node->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
 
         DisplayListRenderer* renderer = startRecording(node.get());
-        renderer->drawColor(0xFFFF00FF, SkXfermode::kSrcOver_Mode);
 
         SkPaint paint;
         paint.setAntiAlias(true);
-        paint.setColor(0xFF00FFFF);
+        paint.setColor(0xFF000000);
         renderer->drawOval(0, 0, width, height, paint);
 
         endRecording(renderer, node.get());
