diff --git a/GPU/GLES/StateMapping.cpp b/GPU/GLES/StateMapping.cpp index 0243b9d167..8d862c5eb4 100644 --- a/GPU/GLES/StateMapping.cpp +++ b/GPU/GLES/StateMapping.cpp @@ -339,6 +339,19 @@ void TransformDrawEngine::ApplyDrawState(int prim) { bool gmask = ((gstate.pmskc >> 8) & 0xFF) < 128; bool bmask = ((gstate.pmskc >> 16) & 0xFF) < 128; bool amask = (gstate.pmska & 0xFF) < 128; + + if (gstate.isModeClear()) { + // Clear mode? Obey the clear mode alpha mask (works opposite) + if (gstate.isClearModeAlphaMask()) { + amask = false; + } + } else { + // Let's not write to alpha if stencil isn't enabled. + if (!gstate.isStencilTestEnabled()) { + amask = false; + } + } + glstate.colorMask.set(rmask, gmask, bmask, amask); // Stencil Test