diff --git a/src/Device/Clipper.cpp b/src/Device/Clipper.cpp
index e42c12f..029b93b 100644
--- a/src/Device/Clipper.cpp
+++ b/src/Device/Clipper.cpp
@@ -20,15 +20,6 @@
 
 namespace sw
 {
-	Clipper::Clipper(bool symmetricNormalizedDepth)
-	{
-		n = symmetricNormalizedDepth ? -1.0f : 0.0f;
-	}
-
-	Clipper::~Clipper()
-	{
-	}
-
 	unsigned int Clipper::computeClipFlags(const float4 &v)
 	{
 		return ((v.x > v.w)     ? CLIP_RIGHT  : 0) |
@@ -36,7 +27,7 @@
 		       ((v.z > v.w)     ? CLIP_FAR    : 0) |
 		       ((v.x < -v.w)    ? CLIP_LEFT   : 0) |
 		       ((v.y < -v.w)    ? CLIP_BOTTOM : 0) |
-		       ((v.z < n * v.w) ? CLIP_NEAR   : 0) |
+		       ((v.z < 0)       ? CLIP_NEAR   : 0) |
 		       Clipper::CLIP_FINITE;   // FIXME: xyz finite
 	}
 
@@ -92,8 +83,8 @@
 		{
 			int j = i == polygon.n - 1 ? 0 : i + 1;
 
-			float di = V[i]->z - n * V[i]->w;
-			float dj = V[j]->z - n * V[j]->w;
+			float di = V[i]->z;
+			float dj = V[j]->z;
 
 			if(di >= 0)
 			{
diff --git a/src/Device/Clipper.hpp b/src/Device/Clipper.hpp
index 1c181d2..b808c08 100644
--- a/src/Device/Clipper.hpp
+++ b/src/Device/Clipper.hpp
@@ -52,10 +52,6 @@
 			CLIP_USER = 0x3F00
 		};
 
-		Clipper(bool symmetricNormalizedDepth);
-
-		~Clipper();
-
 		unsigned int computeClipFlags(const float4 &v);
 		bool clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw);
 
@@ -69,8 +65,6 @@
 		void clipPlane(Polygon &polygon, const Plane &plane);
 
 		void clipEdge(float4 &Vo, const float4 &Vi, const float4 &Vj, float di, float dj) const;
-
-		float n;   // Near clip plane distance
 	};
 }
 
diff --git a/src/Device/Context.cpp b/src/Device/Context.cpp
index 1fb4d53..7ed22b2 100644
--- a/src/Device/Context.cpp
+++ b/src/Device/Context.cpp
@@ -28,7 +28,6 @@
 	extern bool perspectiveCorrection;
 
 	bool halfIntegerCoordinates = false;     // Pixel centers are not at integer coordinates
-	bool symmetricNormalizedDepth = false;   // [-1, 1] instead of [0, 1]
 	bool booleanFaceRegister = false;
 	bool fullPixelPositionRegister = false;
 	bool leadingVertexFirst = false;         // Flat shading uses first vertex, else last
diff --git a/src/Device/Renderer.cpp b/src/Device/Renderer.cpp
index 3874889..a6fbaf4 100644
--- a/src/Device/Renderer.cpp
+++ b/src/Device/Renderer.cpp
@@ -43,7 +43,6 @@
 namespace sw
 {
 	extern bool halfIntegerCoordinates;     // Pixel centers are not at integer coordinates
-	extern bool symmetricNormalizedDepth;   // [-1, 1] instead of [0, 1]
 	extern bool booleanFaceRegister;
 	extern bool fullPixelPositionRegister;
 	extern bool leadingVertexFirst;         // Flat shading uses first vertex, else last
@@ -79,7 +78,6 @@
 		if(!initialized)
 		{
 			sw::halfIntegerCoordinates = conventions.halfIntegerCoordinates;
-			sw::symmetricNormalizedDepth = conventions.symmetricNormalizedDepth;
 			sw::booleanFaceRegister = conventions.booleanFaceRegister;
 			sw::fullPixelPositionRegister = conventions.fullPixelPositionRegister;
 			sw::leadingVertexFirst = conventions.leadingVertexFirst;
@@ -126,7 +124,7 @@
 		setGlobalRenderingSettings(conventions, exactColorRounding);
 
 		setRenderTarget(0, nullptr);
-		clipper = new Clipper(symmetricNormalizedDepth);
+		clipper = new Clipper;
 		blitter = new Blitter;
 
 		updateClipPlanes = true;
diff --git a/src/Pipeline/VertexRoutine.cpp b/src/Pipeline/VertexRoutine.cpp
index 592daa0..9a82819 100644
--- a/src/Pipeline/VertexRoutine.cpp
+++ b/src/Pipeline/VertexRoutine.cpp
@@ -115,7 +115,7 @@
 		Int4 maxZ = CmpLT(o[pos].w, o[pos].z);
 		Int4 minX = CmpNLE(-o[pos].w, o[pos].x);
 		Int4 minY = CmpNLE(-o[pos].w, o[pos].y);
-		Int4 minZ = symmetricNormalizedDepth ? CmpNLE(-o[pos].w, o[pos].z) : CmpNLE(Float4(0.0f), o[pos].z);
+		Int4 minZ = CmpNLE(Float4(0.0f), o[pos].z);
 
 		clipFlags = *Pointer<Int>(constants + OFFSET(Constants,maxX) + SignMask(maxX) * 4);   // FIXME: Array indexing
 		clipFlags |= *Pointer<Int>(constants + OFFSET(Constants,maxY) + SignMask(maxY) * 4);
@@ -690,11 +690,6 @@
 		v.z = o[pos].z;
 		v.w = o[pos].w;
 
-		if(symmetricNormalizedDepth)
-		{
-			v.z = (v.z + v.w) * Float4(0.5f);   // [-1, 1] -> [0, 1]
-		}
-
 		Float4 w = As<Float4>(As<Int4>(v.w) | (As<Int4>(CmpEQ(v.w, Float4(0.0f))) & As<Int4>(Float4(1.0f))));
 		Float4 rhw = Float4(1.0f) / w;
 
