diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 6ca3c81..68129b6 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
Binary files differ
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index 4257b69..4f95002 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -1607,6 +1607,7 @@
 	//	case sw::FORMAT_D32_LOCKABLE:  return 0;
 	//	case sw::FORMAT_S8_LOCKABLE:   return 8;
 		default:
+			UNREACHABLE(stencilFormat);
 			return 0;
 		}
 	}
@@ -1642,6 +1643,7 @@
 		case sw::FORMAT_R5G6B5:
 			return 0;
 		default:
+			UNREACHABLE(colorFormat);
 			return 0;
 		}
 	}
@@ -1705,6 +1707,7 @@
 		case sw::FORMAT_R5G6B5:
 			return 5;
 		default:
+			UNREACHABLE(colorFormat);
 			return 0;
 		}
 	}
@@ -1759,6 +1762,7 @@
 		case sw::FORMAT_R5G6B5:
 			return 6;
 		default:
+			UNREACHABLE(colorFormat);
 			return 0;
 		}
 	}
@@ -1802,6 +1806,7 @@
 		case sw::FORMAT_R5G6B5:
 			return 5;
 		default:
+			UNREACHABLE(colorFormat);
 			return 0;
 		}
 	}
@@ -1827,7 +1832,9 @@
 	//	case sw::FORMAT_S8_LOCKABLE:    return 0;
 		case sw::FORMAT_D32FS8_SHADOW:
 		case sw::FORMAT_D32FS8_TEXTURE: return 32;
-		default:                        return 0;
+		default:
+			UNREACHABLE(depthFormat);
+			return 0;
 		}
 	}
 
diff --git a/src/Renderer/Context.cpp b/src/Renderer/Context.cpp
index e5ee4dc..45ad436 100644
--- a/src/Renderer/Context.cpp
+++ b/src/Renderer/Context.cpp
@@ -276,6 +276,9 @@
 		cullMode = CULL_CLOCKWISE;
 		alphaReference = 0.0f;
 
+		depthBias = 0.0f;
+		slopeDepthBias = 0.0f;
+
 		for(int i = 0; i < RENDERTARGETS; i++)
 		{
 			colorWriteMask[i] = 0x0000000F;
diff --git a/src/Renderer/Context.hpp b/src/Renderer/Context.hpp
index 640ec4e..6116794 100644
--- a/src/Renderer/Context.hpp
+++ b/src/Renderer/Context.hpp
@@ -434,6 +434,9 @@
 		CullMode cullMode;
 		float alphaReference;
 
+		float depthBias;
+		float slopeDepthBias;
+
 		TextureStage textureStage[8];
 		Sampler sampler[TOTAL_IMAGE_UNITS];
 
diff --git a/src/Renderer/PixelProcessor.cpp b/src/Renderer/PixelProcessor.cpp
index db11aed..abf6593 100644
--- a/src/Renderer/PixelProcessor.cpp
+++ b/src/Renderer/PixelProcessor.cpp
@@ -990,6 +990,7 @@
 		state.pixelFogMode = context->pixelFogActive();
 		state.wBasedFog = context->wBasedFog && context->pixelFogActive() != FOG_NONE;
 		state.perspective = context->perspectiveActive();
+		state.depthClamp = (context->depthBias != 0.0f) || (context->slopeDepthBias != 0.0f);
 
 		if(context->alphaBlendActive())
 		{
diff --git a/src/Renderer/PixelProcessor.hpp b/src/Renderer/PixelProcessor.hpp
index 65f6b92..d3b0602 100644
--- a/src/Renderer/PixelProcessor.hpp
+++ b/src/Renderer/PixelProcessor.hpp
@@ -66,6 +66,7 @@
 			bool occlusionEnabled                     : 1;
 			bool wBasedFog                            : 1;
 			bool perspective                          : 1;
+			bool depthClamp                           : 1;
 
 			bool alphaBlendActive                     : 1;
 			BlendFactor sourceBlendFactor             : BITS(BLEND_LAST);
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp
index 32e2027..0869697 100644
--- a/src/Renderer/Renderer.cpp
+++ b/src/Renderer/Renderer.cpp
@@ -545,7 +545,7 @@
 
 				if(context->isDrawTriangle(false))
 				{
-					N += depthBias;
+					N += context->depthBias;
 				}
 
 				if(complementaryDepthBuffer)
@@ -583,7 +583,7 @@
 				data->halfPixelX = replicate(0.5f / W);
 				data->halfPixelY = replicate(0.5f / H);
 				data->viewportHeight = abs(viewport.height);
-				data->slopeDepthBias = slopeDepthBias;
+				data->slopeDepthBias = context->slopeDepthBias;
 				data->depthRange = Z;
 				data->depthNear = N;
 				draw->clipFlags = clipFlags;
@@ -2447,12 +2447,12 @@
 
 	void Renderer::setDepthBias(float bias)
 	{
-		depthBias = bias;
+		context->depthBias = bias;
 	}
 
 	void Renderer::setSlopeDepthBias(float slopeBias)
 	{
-		slopeDepthBias = slopeBias;
+		context->slopeDepthBias = slopeBias;
 	}
 
 	void Renderer::setRasterizerDiscard(bool rasterizerDiscard)
diff --git a/src/Renderer/SetupProcessor.cpp b/src/Renderer/SetupProcessor.cpp
index 772327f..bc456e9 100644
--- a/src/Renderer/SetupProcessor.cpp
+++ b/src/Renderer/SetupProcessor.cpp
@@ -85,7 +85,7 @@
 		state.pointSprite = context->pointSpriteActive();
 		state.cullMode = context->cullMode;
 		state.twoSidedStencil = context->stencilActive() && context->twoSidedStencil;
-		state.slopeDepthBias = slopeDepthBias != 0.0f;
+		state.slopeDepthBias = context->slopeDepthBias != 0.0f;
 		state.vFace = context->pixelShader && context->pixelShader->isVFaceDeclared();
 
 		state.positionRegister = Pos;
diff --git a/src/Renderer/SetupProcessor.hpp b/src/Renderer/SetupProcessor.hpp
index 2750d4c..be0adc7 100644
--- a/src/Renderer/SetupProcessor.hpp
+++ b/src/Renderer/SetupProcessor.hpp
@@ -95,9 +95,6 @@
 
 		void setRoutineCacheSize(int cacheSize);
 
-		float depthBias;
-		float slopeDepthBias;
-
 	private:
 		Context *const context;
 
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index 44fafd3..48a86a1 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -95,6 +95,11 @@
 				}
 
 				z[q] = interpolate(x, Dz[q], z[q], primitive + OFFSET(Primitive,z), false, false);
+
+				if(state.depthClamp)
+				{
+					z[q] = Min(Max(z[q], Float4(0.0f)), Float4(1.0f));
+				}
 			}
 		}
 
