diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp
index 27ef798..290322a 100644
--- a/src/Renderer/Renderer.cpp
+++ b/src/Renderer/Renderer.cpp
@@ -1905,7 +1905,7 @@
 
 		size_t count = vertexShader->getLength();
 
-		for(int i = 0; i < count; i++)
+		for(size_t i = 0; i < count; i++)
 		{
 			const Shader::Instruction *instruction = vertexShader->getInstruction(i);
 
@@ -1949,7 +1949,7 @@
 
 		size_t count = pixelShader->getLength();
 
-		for(int i = 0; i < count; i++)
+		for(size_t i = 0; i < count; i++)
 		{
 			const Shader::Instruction *instruction = pixelShader->getInstruction(i);
 
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index 20ddc8f..c866fb7 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -3584,7 +3584,7 @@
 		int pad = 0;        // Count number of texm3x3pad instructions
 		Vector4i dPairing;   // Destination for first pairing instruction
 
-		for(int i = 0; i < shader->getLength(); i++)
+		for(size_t i = 0; i < shader->getLength(); i++)
 		{
 			const Shader::Instruction *instruction = shader->getInstruction(i);
 			Shader::Opcode opcode = instruction->opcode;
@@ -3786,7 +3786,7 @@
 		bool out[4][4] = {false};
 
 		// Create all call site return blocks up front
-		for(int i = 0; i < shader->getLength(); i++)
+		for(size_t i = 0; i < shader->getLength(); i++)
 		{
 			const Shader::Instruction *instruction = shader->getInstruction(i);
 			Shader::Opcode opcode = instruction->opcode;
@@ -3800,7 +3800,7 @@
 			}
 		}
 		
-		for(int i = 0; i < shader->getLength(); i++)
+		for(size_t i = 0; i < shader->getLength(); i++)
 		{
 			const Shader::Instruction *instruction = shader->getInstruction(i);
 			Shader::Opcode opcode = instruction->opcode;
@@ -5740,7 +5740,7 @@
 
 			if(localShaderConstants)   // Constant may be known at compile time
 			{
-				for(int j = 0; j < shader->getLength(); j++)
+				for(size_t j = 0; j < shader->getLength(); j++)
 				{
 					const Shader::Instruction &instruction = *shader->getInstruction(j);
 
diff --git a/src/Shader/PixelShader.cpp b/src/Shader/PixelShader.cpp
index ddddb94..9e4cff5 100644
--- a/src/Shader/PixelShader.cpp
+++ b/src/Shader/PixelShader.cpp
@@ -26,7 +26,7 @@
 
 		if(ps)   // Make a copy
 		{
-			for(int i = 0; i < ps->getLength(); i++)
+			for(size_t i = 0; i < ps->getLength(); i++)
 			{
 				append(new sw::Shader::Instruction(*ps->getInstruction(i)));
 			}
diff --git a/src/Shader/Shader.cpp b/src/Shader/Shader.cpp
index fc98eb5..aa5b30d 100644
--- a/src/Shader/Shader.cpp
+++ b/src/Shader/Shader.cpp
@@ -1457,7 +1457,7 @@
 				instruction[0]->opcode = OPCODE_NULL;
 				instruction[1]->opcode = OPCODE_NULL;
 
-				for(int i = 2; i < instruction.size(); i++)
+				for(size_t i = 2; i < instruction.size(); i++)
 				{
 					if(instruction[i]->opcode == OPCODE_LABEL || instruction[i]->opcode == OPCODE_RET)
 					{
@@ -1470,8 +1470,8 @@
 
 	void Shader::removeNull()
 	{
-		int size = 0;
-		for(int i = 0; i < instruction.size(); i++)
+		size_t size = 0;
+		for(size_t i = 0; i < instruction.size(); i++)
 		{
 			if(instruction[i]->opcode != OPCODE_NULL)
 			{
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index a07fbb5..a12083f 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -76,7 +76,7 @@
 		}
 
 		// Create all call site return blocks up front
-		for(int i = 0; i < shader->getLength(); i++)
+		for(size_t i = 0; i < shader->getLength(); i++)
 		{
 			const Shader::Instruction *instruction = shader->getInstruction(i);
 			Shader::Opcode opcode = instruction->opcode;
@@ -90,7 +90,7 @@
 			}
 		}
 	
-		for(int i = 0; i < shader->getLength(); i++)
+		for(size_t i = 0; i < shader->getLength(); i++)
 		{
 			const Shader::Instruction *instruction = shader->getInstruction(i);
 			Shader::Opcode opcode = instruction->opcode;
@@ -726,7 +726,7 @@
 
 			if(localShaderConstants)   // Constant may be known at compile time
 			{
-				for(int j = 0; j < shader->getLength(); j++)
+				for(size_t j = 0; j < shader->getLength(); j++)
 				{
 					const Shader::Instruction &instruction = *shader->getInstruction(j);
 
diff --git a/src/Shader/VertexShader.cpp b/src/Shader/VertexShader.cpp
index 9ead3d0..c7e758d 100644
--- a/src/Shader/VertexShader.cpp
+++ b/src/Shader/VertexShader.cpp
@@ -31,7 +31,7 @@
 
 		if(vs)   // Make a copy
 		{
-			for(int i = 0; i < vs->getLength(); i++)
+			for(size_t i = 0; i < vs->getLength(); i++)
 			{
 				append(new sw::Shader::Instruction(*vs->getInstruction(i)));
 			}
