diff --git a/src/Renderer/Surface.cpp b/src/Renderer/Surface.cpp
index cc1c5a7..9c47f1c 100644
--- a/src/Renderer/Surface.cpp
+++ b/src/Renderer/Surface.cpp
@@ -1400,7 +1400,7 @@
 
 		if(!external.buffer)
 		{
-			if(internal.buffer && identicalFormats())
+			if(internal.buffer && identicalBuffers())
 			{
 				external.buffer = internal.buffer;
 			}
@@ -1452,7 +1452,7 @@
 
 		if(!internal.buffer)
 		{
-			if(external.buffer && identicalFormats())
+			if(external.buffer && identicalBuffers())
 			{
 				internal.buffer = external.buffer;
 			}
@@ -2311,7 +2311,7 @@
 					{
 						for(int i = 0; i < 4 && (x + i) < internal.width; i++)
 						{
-							dest[(x + i) + (y + j) * internal.width] = c[(unsigned int)(source->lut >> 2 * (i + j * 4)) % 4];
+							dest[(x + i) + (y + j) * internal.pitchP] = c[(unsigned int)(source->lut >> 2 * (i + j * 4)) % 4];
 						}
 					}
 
@@ -2361,7 +2361,7 @@
 							unsigned int a = (unsigned int)(source->a >> 4 * (i + j * 4)) & 0x0F;
 							unsigned int color = (c[(unsigned int)(source->lut >> 2 * (i + j * 4)) % 4] & 0x00FFFFFF) | ((a << 28) + (a << 24));
 
-							dest[(x + i) + (y + j) * internal.width] = color;
+							dest[(x + i) + (y + j) * internal.pitchP] = color;
 						}
 					}
 
@@ -2435,7 +2435,7 @@
 							unsigned int alpha = (unsigned int)a[(unsigned int)(source->alut >> (16 + 3 * (i + j * 4))) % 8] << 24;
 							unsigned int color = (c[(source->clut >> 2 * (i + j * 4)) % 4] & 0x00FFFFFF) | alpha;
 
-							dest[(x + i) + (y + j) * internal.width] = color;
+							dest[(x + i) + (y + j) * internal.pitchP] = color;
 						}
 					}
 
@@ -2491,7 +2491,7 @@
 					{
 						for(int i = 0; i < 4 && (x + i) < internal.width; i++)
 						{
-							dest[(x + i) + (y + j) * internal.width] = r[(unsigned int)(source->rlut >> (16 + 3 * (i + j * 4))) % 8];
+							dest[(x + i) + (y + j) * internal.pitchP] = r[(unsigned int)(source->rlut >> (16 + 3 * (i + j * 4))) % 8];
 						}
 					}
 
@@ -2574,7 +2574,7 @@
 							word r = X[(unsigned int)(source->xlut >> (16 + 3 * (i + j * 4))) % 8];
 							word g = Y[(unsigned int)(source->ylut >> (16 + 3 * (i + j * 4))) % 8];
 
-							dest[(x + i) + (y + j) * internal.width] = (g << 8) + r;
+							dest[(x + i) + (y + j) * internal.pitchP] = (g << 8) + r;
 						}
 					}
 
@@ -3729,7 +3729,7 @@
 		return resource;
 	}
 
-	bool Surface::identicalFormats() const
+	bool Surface::identicalBuffers() const
 	{
 		return external.format == internal.format &&
 		       external.width  == internal.width &&
diff --git a/src/Renderer/Surface.hpp b/src/Renderer/Surface.hpp
index a6ef15b..10c5364 100644
--- a/src/Renderer/Surface.hpp
+++ b/src/Renderer/Surface.hpp
@@ -486,7 +486,7 @@
 		static void *allocateBuffer(int width, int height, int depth, int border, int samples, Format format);
 		static void memfill4(void *buffer, int pattern, int bytes);
 
-		bool identicalFormats() const;
+		bool identicalBuffers() const;
 		Format selectInternalFormat(Format format) const;
 
 		void resolve();
