diff --git a/src/Main/FrameBuffer.cpp b/src/Main/FrameBuffer.cpp
index 2492d26..15e7e4d 100644
--- a/src/Main/FrameBuffer.cpp
+++ b/src/Main/FrameBuffer.cpp
@@ -150,7 +150,7 @@
 		cursorPositionY = y;
 	}
 
-	void FrameBuffer::copy(void *source, Format format)
+	void FrameBuffer::copy(void *source, Format format, size_t stride)
 	{
 		if(!source)
 		{
@@ -170,11 +170,7 @@
 		}
 		else
 		{
-			const int width2 = (width + 1) & ~1;
-			const int sBytes = Surface::bytes(sourceFormat);
-			const int sStride = sBytes * width2;
-
-			target = (byte*)source + (height - 1) * sStride;
+			target = (byte*)source + (height - 1) * stride;
 		}
 
 		cursorX = cursorPositionX - cursorHotspotX;
diff --git a/src/Main/FrameBuffer.hpp b/src/Main/FrameBuffer.hpp
index 4ba18c0..faad0d5 100644
--- a/src/Main/FrameBuffer.hpp
+++ b/src/Main/FrameBuffer.hpp
@@ -42,8 +42,8 @@
 		int getHeight() const;
 		int getStride() const;
 
-		virtual void flip(void *source, Format format) = 0;
-		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format) = 0;
+		virtual void flip(void *source, Format sourceFormat, size_t sourceStride) = 0;
+		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) = 0;
 
 		virtual void *lock() = 0;
 		virtual void unlock() = 0;
@@ -55,7 +55,7 @@
 		static Routine *copyRoutine(const BlitState &state);
 
 	protected:
-		void copy(void *source, Format format);
+		void copy(void *source, Format format, size_t stride);
 		int width;
 		int height;
 		Format sourceFormat;
diff --git a/src/Main/FrameBufferAndroid.cpp b/src/Main/FrameBufferAndroid.cpp
index 550dfb0..ff1148b 100644
--- a/src/Main/FrameBufferAndroid.cpp
+++ b/src/Main/FrameBufferAndroid.cpp
@@ -28,9 +28,9 @@
         nativeWindow->common.decRef(&nativeWindow->common);
     }
 
-    void FrameBufferAndroid::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+    void FrameBufferAndroid::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
     {
-        copy(source, format);
+        copy(source, sourceFormat, sourceStride);
 		if (buffer)
 		{
 			nativeWindow->queueBuffer(nativeWindow, buffer, -1);
diff --git a/src/Main/FrameBufferAndroid.hpp b/src/Main/FrameBufferAndroid.hpp
index b1b15b0..7e7acde 100644
--- a/src/Main/FrameBufferAndroid.hpp
+++ b/src/Main/FrameBufferAndroid.hpp
@@ -16,11 +16,11 @@
 
         ~FrameBufferAndroid();
 
-        virtual void flip(void *source, Format format) {blit(source, 0, 0, format);};
-        virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);
-
-        virtual void *lock();
-        virtual void unlock();
+        void flip(void *source, Format sourceFormat, size_t sourceStride) override {blit(source, 0, 0, sourceFormat, sourceStride);};
+		void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
+
+		void *lock() override;
+		void unlock() override;
 
         bool setSwapRectangle(int l, int t, int w, int h);
 
diff --git a/src/Main/FrameBufferDD.cpp b/src/Main/FrameBufferDD.cpp
index 8d984df..81b2ef2 100644
--- a/src/Main/FrameBufferDD.cpp
+++ b/src/Main/FrameBufferDD.cpp
@@ -247,9 +247,9 @@
 		updateBounds(windowHandle);
 	}
 
-	void FrameBufferDD::flip(void *source, Format format)
+	void FrameBufferDD::flip(void *source, Format sourceFormat, size_t sourceStride)
 	{
-		copy(source, format);
+		copy(source, sourceFormat, sourceStride);
 
 		if(!readySurfaces())
 		{
@@ -278,9 +278,9 @@
 		}
 	}
 
-	void FrameBufferDD::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+	void FrameBufferDD::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
 	{
-		copy(source, format);
+		copy(source, sourceFormat, sourceStride);
 
 		if(!readySurfaces())
 		{
@@ -317,20 +317,20 @@
 		}
 	}
 
-	void FrameBufferDD::flip(HWND windowOverride, void *source, Format format)
+	void FrameBufferDD::flip(HWND windowOverride, void *source, Format sourceFormat, size_t sourceStride)
 	{
 		updateClipper(windowOverride);
 		updateBounds(windowOverride);
 
-		flip(source, format);
+		flip(source, sourceFormat, sourceStride);
 	}
 
-	void FrameBufferDD::blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+	void FrameBufferDD::blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
 	{
 		updateClipper(windowOverride);
 		updateBounds(windowOverride);
 
-		blit(source, sourceRect, destRect, format);
+		blit(source, sourceRect, destRect, sourceFormat, sourceStride);
 	}
 
 	void FrameBufferDD::screenshot(void *destBuffer)
diff --git a/src/Main/FrameBufferDD.hpp b/src/Main/FrameBufferDD.hpp
index 8fa54f1..1f42552 100644
--- a/src/Main/FrameBufferDD.hpp
+++ b/src/Main/FrameBufferDD.hpp
@@ -25,20 +25,20 @@
 
 		virtual ~FrameBufferDD();
 
-		virtual void flip(void *source, Format format);
-		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);
+		void flip(void *source, Format sourceFormat, size_t sourceStride) override;
+		void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
 
-		virtual void flip(HWND windowOverride, void *source, Format format);
-		virtual void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format format);
+		void flip(HWND windowOverride, void *source, Format sourceFormat, size_t sourceStride) override;
+		void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
 
-		virtual void *lock();
-		virtual void unlock();
+		void *lock() override;
+		void unlock() override;
 
-		virtual void setGammaRamp(GammaRamp *gammaRamp, bool calibrate);
-		virtual void getGammaRamp(GammaRamp *gammaRamp);
+		void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) override;
+		void getGammaRamp(GammaRamp *gammaRamp) override;
 
-		virtual void screenshot(void *destBuffer);
-		virtual bool getScanline(bool &inVerticalBlank, unsigned int &scanline);
+		void screenshot(void *destBuffer) override;
+		bool getScanline(bool &inVerticalBlank, unsigned int &scanline) override;
 
 		void drawText(int x, int y, const char *string, ...);
 
diff --git a/src/Main/FrameBufferGDI.cpp b/src/Main/FrameBufferGDI.cpp
index 02b5270..9251edb 100644
--- a/src/Main/FrameBufferGDI.cpp
+++ b/src/Main/FrameBufferGDI.cpp
@@ -68,14 +68,14 @@
 	{
 	}
 
-	void FrameBufferGDI::flip(void *source, Format format)
+	void FrameBufferGDI::flip(void *source, Format sourceFormat, size_t sourceStride)
 	{
-		blit(source, 0, 0, format);
+		blit(source, 0, 0, sourceFormat, sourceStride);
 	}
 	
-	void FrameBufferGDI::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+	void FrameBufferGDI::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
 	{
-		copy(source, format);
+		copy(source, sourceFormat, sourceStride);
 
 		int sourceLeft = sourceRect ? sourceRect->x0 : 0;
 		int sourceTop = sourceRect ? sourceRect->y0 : 0;
@@ -89,12 +89,12 @@
 		StretchBlt(windowContext, destLeft, destTop, destWidth, destHeight, bitmapContext, sourceLeft, sourceTop, sourceWidth, sourceHeight, SRCCOPY);
 	}
 
-	void FrameBufferGDI::flip(HWND windowOverride, void *source, Format format)
+	void FrameBufferGDI::flip(HWND windowOverride, void *source, Format sourceFormat, size_t sourceStride)
 	{
-		blit(windowOverride, source, 0, 0, format);
+		blit(windowOverride, source, 0, 0, sourceFormat, sourceStride);
 	}
 
-	void FrameBufferGDI::blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+	void FrameBufferGDI::blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
 	{
 		if(windowed && windowOverride != 0 && windowOverride != bitmapWindow)
 		{
@@ -102,7 +102,7 @@
 			init(windowOverride);
 		}
 
-		blit(source, sourceRect, destRect, format);
+		blit(source, sourceRect, destRect, sourceFormat, sourceStride);
 	}
 
 	void FrameBufferGDI::setGammaRamp(GammaRamp *gammaRamp, bool calibrate)
diff --git a/src/Main/FrameBufferGDI.hpp b/src/Main/FrameBufferGDI.hpp
index a2afc6c..b4b4976 100644
--- a/src/Main/FrameBufferGDI.hpp
+++ b/src/Main/FrameBufferGDI.hpp
@@ -23,20 +23,20 @@
 
 		virtual ~FrameBufferGDI();
 		
-		virtual void flip(void *source, Format format);
-		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);
+		void flip(void *source, Format sourceFormat, size_t sourceStride) override;
+		void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
 
-		virtual void flip(HWND windowOverride, void *source, Format format);
-		virtual void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format format);
+		void flip(HWND windowOverride, void *source, Format sourceFormat, size_t sourceStride) override;
+		void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
 
-		virtual void *lock();
-		virtual void unlock();
+		void *lock() override;
+		void unlock() override;
 
-		virtual void setGammaRamp(GammaRamp *gammaRamp, bool calibrate);
-		virtual void getGammaRamp(GammaRamp *gammaRamp);
+		void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) override;
+		void getGammaRamp(GammaRamp *gammaRamp) override;
 
-		virtual void screenshot(void *destBuffer);
-		virtual bool getScanline(bool &inVerticalBlank, unsigned int &scanline);
+		void screenshot(void *destBuffer) override;
+		bool getScanline(bool &inVerticalBlank, unsigned int &scanline) override;
 
 	private:
 		void init(HWND bitmapWindow);
diff --git a/src/Main/FrameBufferWin.hpp b/src/Main/FrameBufferWin.hpp
index 443638d..c0d554d 100644
--- a/src/Main/FrameBufferWin.hpp
+++ b/src/Main/FrameBufferWin.hpp
@@ -30,14 +30,8 @@
 
 		virtual ~FrameBufferWin();
 
-		virtual void flip(void *source, Format format) = 0;
-		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format) = 0;
-
-		virtual void flip(HWND windowOverride, void *source, Format format) = 0;
-		virtual void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format format) = 0;
-
-		virtual void *lock() = 0;
-		virtual void unlock() = 0;
+		virtual void flip(HWND windowOverride, void *source, Format sourceFormat, size_t sourceStride) = 0;
+		virtual void blit(HWND windowOverride, void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) = 0;
 
 		virtual void setGammaRamp(GammaRamp *gammaRamp, bool calibrate) = 0;
 		virtual void getGammaRamp(GammaRamp *gammaRamp) = 0;
diff --git a/src/Main/FrameBufferX11.cpp b/src/Main/FrameBufferX11.cpp
index c43a930..d4286f1 100644
--- a/src/Main/FrameBufferX11.cpp
+++ b/src/Main/FrameBufferX11.cpp
@@ -127,9 +127,9 @@
 		locked = 0;
 	}
 
-	void FrameBufferX11::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format)
+	void FrameBufferX11::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
 	{
-		copy(source, format);
+		copy(source, sourceFormat, sourceStride);
 
 		if(!mit_shm)
 		{
diff --git a/src/Main/FrameBufferX11.hpp b/src/Main/FrameBufferX11.hpp
index 4bd2e0a..c5e8b53 100644
--- a/src/Main/FrameBufferX11.hpp
+++ b/src/Main/FrameBufferX11.hpp
@@ -32,11 +32,11 @@
 
 		~FrameBufferX11();
 
-		virtual void flip(void *source, Format format) {blit(source, 0, 0, format);};
-		virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);
+		void flip(void *source, Format sourceFormat, size_t sourceStride) override {blit(source, 0, 0, sourceFormat, sourceStride);};
+		void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
 
-		virtual void *lock();
-		virtual void unlock();
+		void *lock() override;
+		void unlock() override;
 
 	private:
 		bool ownX11;
diff --git a/src/OpenGL/libEGL/Surface.cpp b/src/OpenGL/libEGL/Surface.cpp
index 57d9f5a..f85c42d 100644
--- a/src/OpenGL/libEGL/Surface.cpp
+++ b/src/OpenGL/libEGL/Surface.cpp
@@ -257,7 +257,7 @@
 	if(backBuffer && frameBuffer)
     {
 		void *source = backBuffer->lockInternal(0, 0, 0, sw::LOCK_READONLY, sw::PUBLIC);
-		frameBuffer->flip(source, backBuffer->Surface::getInternalFormat());
+		frameBuffer->flip(source, backBuffer->Surface::getInternalFormat(), backBuffer->getInternalPitchB());
 		backBuffer->unlockInternal();
 
         checkForResize();
diff --git a/tests/third_party/PowerVR/Examples/Intermediate/ColourGrading/OGLES2/Build/WindowsVC2010/OGLES2ColourGrading.vcxproj.user b/tests/third_party/PowerVR/Examples/Intermediate/ColourGrading/OGLES2/Build/WindowsVC2010/OGLES2ColourGrading.vcxproj.user
index a2ad25d..d3daaab 100644
--- a/tests/third_party/PowerVR/Examples/Intermediate/ColourGrading/OGLES2/Build/WindowsVC2010/OGLES2ColourGrading.vcxproj.user
+++ b/tests/third_party/PowerVR/Examples/Intermediate/ColourGrading/OGLES2/Build/WindowsVC2010/OGLES2ColourGrading.vcxproj.user
@@ -8,4 +8,12 @@
     <LocalDebuggerEnvironment>PATH=$(SolutionDir)..\lib\$(Configuration)_$(Platform)</LocalDebuggerEnvironment>
     <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LocalDebuggerEnvironment>PATH=$(SolutionDir)..\lib\$(Configuration)_$(Platform)</LocalDebuggerEnvironment>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LocalDebuggerEnvironment>PATH=$(SolutionDir)..\lib\$(Configuration)_$(Platform)</LocalDebuggerEnvironment>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
