diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 78f1c0ea72235d988f9e409495f7ef13eaaab418..4d1a79c5591f21f7298fee4786f15b455a3a90f4 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -420,8 +420,9 @@ bool Maxwell3D::IsShaderStageEnabled(Regs::ShaderStage stage) const {
 }
 
 void Maxwell3D::ProcessClearBuffers() {
-    ASSERT(regs.clear_buffers.R && regs.clear_buffers.G && regs.clear_buffers.B &&
-           regs.clear_buffers.A);
+    ASSERT(regs.clear_buffers.R == regs.clear_buffers.G &&
+           regs.clear_buffers.R == regs.clear_buffers.B &&
+           regs.clear_buffers.R == regs.clear_buffers.A);
 
     VideoCore::g_renderer->Rasterizer()->Clear();
 }
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 8e11711610ed859dd8783b3644f3e69e64458af1..08c4df5dcc19c74b32c04bd19c58ac083b40dffe 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -300,6 +300,20 @@ bool RasterizerOpenGL::AccelerateDrawBatch(bool is_indexed) {
 void RasterizerOpenGL::Clear() {
     const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
 
+    GLbitfield clear_mask = 0;
+    if (regs.clear_buffers.R && regs.clear_buffers.G && regs.clear_buffers.B &&
+        regs.clear_buffers.A) {
+        clear_mask |= GL_COLOR_BUFFER_BIT;
+    }
+    if (regs.clear_buffers.Z)
+        clear_mask |= GL_DEPTH_BUFFER_BIT;
+
+    if (clear_mask == 0)
+        return;
+
+    // Sync the depth test state before configuring the framebuffer surfaces.
+    SyncDepthTestState();
+
     // TODO(bunnei): Implement these
     const bool has_stencil = false;
     const bool using_color_fb = true;
@@ -353,10 +367,6 @@ void RasterizerOpenGL::Clear() {
                  regs.clear_color[3]);
     glClearDepth(regs.clear_depth);
 
-    GLbitfield clear_mask = GL_COLOR_BUFFER_BIT;
-    if (regs.clear_buffers.Z)
-        clear_mask |= GL_DEPTH_BUFFER_BIT;
-
     glClear(clear_mask);
 
     // Mark framebuffer surfaces as dirty