diff --git a/src/Device/Clipper.cpp b/src/Device/Clipper.cpp
index 0bd04ab..43fa72b 100644
--- a/src/Device/Clipper.cpp
+++ b/src/Device/Clipper.cpp
@@ -16,46 +16,23 @@
 
 #include "Polygon.hpp"
 #include "Renderer.hpp"
-#include "Vulkan/VkDebug.hpp"
 
-namespace sw
+namespace
 {
-	unsigned int Clipper::computeClipFlags(const float4 &v)
+	inline void clipEdge(sw::float4 &Vo, const sw::float4 &Vi, const sw::float4 &Vj, float di, float dj)
 	{
-		return ((v.x > v.w)     ? CLIP_RIGHT  : 0) |
-		       ((v.y > v.w)     ? CLIP_TOP    : 0) |
-		       ((v.z > v.w)     ? CLIP_FAR    : 0) |
-		       ((v.x < -v.w)    ? CLIP_LEFT   : 0) |
-		       ((v.y < -v.w)    ? CLIP_BOTTOM : 0) |
-		       ((v.z < 0)       ? CLIP_NEAR   : 0) |
-		       Clipper::CLIP_FINITE;   // FIXME: xyz finite
+		float D = 1.0f / (dj - di);
+
+		Vo.x = (dj * Vi.x - di * Vj.x) * D;
+		Vo.y = (dj * Vi.y - di * Vj.y) * D;
+		Vo.z = (dj * Vi.z - di * Vj.z) * D;
+		Vo.w = (dj * Vi.w - di * Vj.w) * D;
 	}
 
-	bool Clipper::clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw)
+	void clipNear(sw::Polygon &polygon)
 	{
-		if(clipFlagsOr & CLIP_FRUSTUM)
-		{
-			if(clipFlagsOr & CLIP_NEAR)   clipNear(polygon);
-			if(polygon.n >= 3) {
-			if(clipFlagsOr & CLIP_FAR)    clipFar(polygon);
-			if(polygon.n >= 3) {
-			if(clipFlagsOr & CLIP_LEFT)   clipLeft(polygon);
-			if(polygon.n >= 3) {
-			if(clipFlagsOr & CLIP_RIGHT)  clipRight(polygon);
-			if(polygon.n >= 3) {
-			if(clipFlagsOr & CLIP_TOP)    clipTop(polygon);
-			if(polygon.n >= 3) {
-			if(clipFlagsOr & CLIP_BOTTOM) clipBottom(polygon);
-			}}}}}
-		}
-
-		return polygon.n >= 3;
-	}
-
-	void Clipper::clipNear(Polygon &polygon)
-	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -90,10 +67,10 @@
 		polygon.i += 1;
 	}
 
-	void Clipper::clipFar(Polygon &polygon)
+	void clipFar(sw::Polygon &polygon)
 	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -128,10 +105,10 @@
 		polygon.i += 1;
 	}
 
-	void Clipper::clipLeft(Polygon &polygon)
+	void clipLeft(sw::Polygon &polygon)
 	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -166,10 +143,10 @@
 		polygon.i += 1;
 	}
 
-	void Clipper::clipRight(Polygon &polygon)
+	void clipRight(sw::Polygon &polygon)
 	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -204,10 +181,10 @@
 		polygon.i += 1;
 	}
 
-	void Clipper::clipTop(Polygon &polygon)
+	void clipTop(sw::Polygon &polygon)
 	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -242,10 +219,10 @@
 		polygon.i += 1;
 	}
 
-	void Clipper::clipBottom(Polygon &polygon)
+	void clipBottom(sw::Polygon &polygon)
 	{
-		const float4 **V = polygon.P[polygon.i];
-		const float4 **T = polygon.P[polygon.i + 1];
+		const sw::float4 **V = polygon.P[polygon.i];
+		const sw::float4 **T = polygon.P[polygon.i + 1];
 
 		int t = 0;
 
@@ -279,14 +256,39 @@
 		polygon.n = t;
 		polygon.i += 1;
 	}
+}
 
-	inline void Clipper::clipEdge(float4 &Vo, const float4 &Vi, const float4 &Vj, float di, float dj) const
+namespace sw
+{
+	unsigned int Clipper::ComputeClipFlags(const float4 &v)
 	{
-		float D = 1.0f / (dj - di);
+		return ((v.x > v.w)     ? CLIP_RIGHT  : 0) |
+		       ((v.y > v.w)     ? CLIP_TOP    : 0) |
+		       ((v.z > v.w)     ? CLIP_FAR    : 0) |
+		       ((v.x < -v.w)    ? CLIP_LEFT   : 0) |
+		       ((v.y < -v.w)    ? CLIP_BOTTOM : 0) |
+		       ((v.z < 0)       ? CLIP_NEAR   : 0) |
+		       Clipper::CLIP_FINITE;   // FIXME: xyz finite
+	}
 
-		Vo.x = (dj * Vi.x - di * Vj.x) * D;
-		Vo.y = (dj * Vi.y - di * Vj.y) * D;
-		Vo.z = (dj * Vi.z - di * Vj.z) * D;
-		Vo.w = (dj * Vi.w - di * Vj.w) * D;
+	bool Clipper::Clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw)
+	{
+		if(clipFlagsOr & CLIP_FRUSTUM)
+		{
+			if(clipFlagsOr & CLIP_NEAR)   clipNear(polygon);
+			if(polygon.n >= 3) {
+			if(clipFlagsOr & CLIP_FAR)    clipFar(polygon);
+			if(polygon.n >= 3) {
+			if(clipFlagsOr & CLIP_LEFT)   clipLeft(polygon);
+			if(polygon.n >= 3) {
+			if(clipFlagsOr & CLIP_RIGHT)  clipRight(polygon);
+			if(polygon.n >= 3) {
+			if(clipFlagsOr & CLIP_TOP)    clipTop(polygon);
+			if(polygon.n >= 3) {
+			if(clipFlagsOr & CLIP_BOTTOM) clipBottom(polygon);
+			}}}}}
+		}
+
+		return polygon.n >= 3;
 	}
 }
diff --git a/src/Device/Clipper.hpp b/src/Device/Clipper.hpp
index 4eaf940..0d111fd 100644
--- a/src/Device/Clipper.hpp
+++ b/src/Device/Clipper.hpp
@@ -15,18 +15,14 @@
 #ifndef sw_Clipper_hpp
 #define sw_Clipper_hpp
 
-#include "Plane.hpp"
-#include "System/Types.hpp"
-
 namespace sw
 {
-	struct Polygon;
 	struct DrawCall;
-	struct DrawData;
+	struct Polygon;
+	struct float4;
 
-	class Clipper
+	struct Clipper
 	{
-	public:
 		enum ClipFlags
 		{
 			// Indicates the vertex is outside the respective frustum plane
@@ -42,18 +38,8 @@
 			CLIP_FINITE = 1 << 7,   // All position coordinates are finite
 		};
 
-		unsigned int computeClipFlags(const float4 &v);
-		bool clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw);
-
-	private:
-		void clipNear(Polygon &polygon);
-		void clipFar(Polygon &polygon);
-		void clipLeft(Polygon &polygon);
-		void clipRight(Polygon &polygon);
-		void clipTop(Polygon &polygon);
-		void clipBottom(Polygon &polygon);
-
-		void clipEdge(float4 &Vo, const float4 &Vi, const float4 &Vj, float di, float dj) const;
+		static unsigned int ComputeClipFlags(const float4 &v);
+		static bool Clip(Polygon &polygon, int clipFlagsOr, const DrawCall &draw);
 	};
 }
 
diff --git a/src/Device/Renderer.cpp b/src/Device/Renderer.cpp
index 3a5a02f..712f748 100644
--- a/src/Device/Renderer.cpp
+++ b/src/Device/Renderer.cpp
@@ -203,8 +203,6 @@
 	{
 		setGlobalRenderingSettings(conventions, exactColorRounding);
 
-		clipper = new Clipper;
-
 		#if PERF_HUD
 			resetTimers();
 		#endif
@@ -264,9 +262,6 @@
 		terminateThreads();
 		sync->unlock();
 
-		delete clipper;
-		clipper = nullptr;
-
 		delete resumeApp;
 		resumeApp = nullptr;
 
@@ -996,7 +991,7 @@
 
 				if(clipFlagsOr != Clipper::CLIP_FINITE)
 				{
-					if(!clipper->clip(polygon, clipFlagsOr, draw))
+					if(!Clipper::Clip(polygon, clipFlagsOr, draw))
 					{
 						continue;
 					}
@@ -1116,19 +1111,19 @@
 
 			P[0].x += -dy0w;
 			P[0].y += +dx0h;
-			C[0] = clipper->computeClipFlags(P[0]);
+			C[0] = Clipper::ComputeClipFlags(P[0]);
 
 			P[1].x += -dy1w;
 			P[1].y += +dx1h;
-			C[1] = clipper->computeClipFlags(P[1]);
+			C[1] = Clipper::ComputeClipFlags(P[1]);
 
 			P[2].x += +dy1w;
 			P[2].y += -dx1h;
-			C[2] = clipper->computeClipFlags(P[2]);
+			C[2] = Clipper::ComputeClipFlags(P[2]);
 
 			P[3].x += +dy0w;
 			P[3].y += -dx0h;
-			C[3] = clipper->computeClipFlags(P[3]);
+			C[3] = Clipper::ComputeClipFlags(P[3]);
 
 			if((C[0] & C[1] & C[2] & C[3]) == Clipper::CLIP_FINITE)
 			{
@@ -1138,7 +1133,7 @@
 
 				if(clipFlagsOr != Clipper::CLIP_FINITE)
 				{
-					if(!clipper->clip(polygon, clipFlagsOr, draw))
+					if(!Clipper::Clip(polygon, clipFlagsOr, draw))
 					{
 						return false;
 					}
@@ -1168,28 +1163,28 @@
 			float dy1 = lineWidth * 0.5f * P1.w / H;
 
 			P[0].x += -dx0;
-			C[0] = clipper->computeClipFlags(P[0]);
+			C[0] = Clipper::ComputeClipFlags(P[0]);
 
 			P[1].y += +dy0;
-			C[1] = clipper->computeClipFlags(P[1]);
+			C[1] = Clipper::ComputeClipFlags(P[1]);
 
 			P[2].x += +dx0;
-			C[2] = clipper->computeClipFlags(P[2]);
+			C[2] = Clipper::ComputeClipFlags(P[2]);
 
 			P[3].y += -dy0;
-			C[3] = clipper->computeClipFlags(P[3]);
+			C[3] = Clipper::ComputeClipFlags(P[3]);
 
 			P[4].x += -dx1;
-			C[4] = clipper->computeClipFlags(P[4]);
+			C[4] = Clipper::ComputeClipFlags(P[4]);
 
 			P[5].y += +dy1;
-			C[5] = clipper->computeClipFlags(P[5]);
+			C[5] = Clipper::ComputeClipFlags(P[5]);
 
 			P[6].x += +dx1;
-			C[6] = clipper->computeClipFlags(P[6]);
+			C[6] = Clipper::ComputeClipFlags(P[6]);
 
 			P[7].y += -dy1;
-			C[7] = clipper->computeClipFlags(P[7]);
+			C[7] = Clipper::ComputeClipFlags(P[7]);
 
 			if((C[0] & C[1] & C[2] & C[3] & C[4] & C[5] & C[6] & C[7]) == Clipper::CLIP_FINITE)
 			{
@@ -1244,7 +1239,7 @@
 
 				if(clipFlagsOr != Clipper::CLIP_FINITE)
 				{
-					if(!clipper->clip(polygon, clipFlagsOr, draw))
+					if(!Clipper::Clip(polygon, clipFlagsOr, draw))
 					{
 						return false;
 					}
@@ -1281,19 +1276,19 @@
 
 		P[0].x -= X;
 		P[0].y += Y;
-		C[0] = clipper->computeClipFlags(P[0]);
+		C[0] = Clipper::ComputeClipFlags(P[0]);
 
 		P[1].x += X;
 		P[1].y += Y;
-		C[1] = clipper->computeClipFlags(P[1]);
+		C[1] = Clipper::ComputeClipFlags(P[1]);
 
 		P[2].x += X;
 		P[2].y -= Y;
-		C[2] = clipper->computeClipFlags(P[2]);
+		C[2] = Clipper::ComputeClipFlags(P[2]);
 
 		P[3].x -= X;
 		P[3].y -= Y;
-		C[3] = clipper->computeClipFlags(P[3]);
+		C[3] = Clipper::ComputeClipFlags(P[3]);
 
 		triangle.v1 = triangle.v0;
 		triangle.v2 = triangle.v0;
@@ -1309,7 +1304,7 @@
 
 			if(clipFlagsOr != Clipper::CLIP_FINITE)
 			{
-				if(!clipper->clip(polygon, clipFlagsOr, draw))
+				if(!Clipper::Clip(polygon, clipFlagsOr, draw))
 				{
 					return false;
 				}
diff --git a/src/Device/Renderer.hpp b/src/Device/Renderer.hpp
index 2c8c3be..8b1a6e0 100644
--- a/src/Device/Renderer.hpp
+++ b/src/Device/Renderer.hpp
@@ -36,7 +36,6 @@
 
 namespace sw
 {
-	class Clipper;
 	struct DrawCall;
 	class PixelShader;
 	class VertexShader;
@@ -248,7 +247,6 @@
 		void initializeThreads();
 		void terminateThreads();
 
-		Clipper *clipper;
 		VkViewport viewport;
 		VkRect2D scissor;
 		int clipFlags;
