diff --git a/src/OpenGL/libGLESv2/Renderbuffer.cpp b/src/OpenGL/libGLESv2/Renderbuffer.cpp
index 98a1c05..f1f6faa 100644
--- a/src/OpenGL/libGLESv2/Renderbuffer.cpp
+++ b/src/OpenGL/libGLESv2/Renderbuffer.cpp
@@ -402,7 +402,7 @@
 {
 	mWidth = 0;
 	mHeight = 0;
-	format = GL_RGBA4;
+	format = GL_NONE;
 	mSamples = 0;
 }
 
diff --git a/src/OpenGL/libGLESv2/ResourceManager.cpp b/src/OpenGL/libGLESv2/ResourceManager.cpp
index e5c5492..04e1f0d 100644
--- a/src/OpenGL/libGLESv2/ResourceManager.cpp
+++ b/src/OpenGL/libGLESv2/ResourceManager.cpp
@@ -324,7 +324,7 @@
 {
 	if(handle != 0 && !getRenderbuffer(handle))
 	{
-		Renderbuffer *renderbufferObject = new Renderbuffer(handle, new Colorbuffer(0, 0, GL_RGBA4_OES, 0));
+		Renderbuffer *renderbufferObject = new Renderbuffer(handle, new Colorbuffer(0, 0, GL_NONE, 0));
 		renderbufferObject->addRef();
 
 		mRenderbufferNameSpace.insert(handle, renderbufferObject);
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 5198ada..f612a63 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -3349,7 +3349,12 @@
 		{
 		case GL_RENDERBUFFER_WIDTH:           *params = renderbuffer->getWidth();       break;
 		case GL_RENDERBUFFER_HEIGHT:          *params = renderbuffer->getHeight();      break;
-		case GL_RENDERBUFFER_INTERNAL_FORMAT: *params = renderbuffer->getFormat();      break;
+		case GL_RENDERBUFFER_INTERNAL_FORMAT:
+			{
+				GLint internalformat = renderbuffer->getFormat();
+				*params = (internalformat == GL_NONE) ? GL_RGBA4 : internalformat;
+			}
+			break;
 		case GL_RENDERBUFFER_RED_SIZE:        *params = renderbuffer->getRedSize();     break;
 		case GL_RENDERBUFFER_GREEN_SIZE:      *params = renderbuffer->getGreenSize();   break;
 		case GL_RENDERBUFFER_BLUE_SIZE:       *params = renderbuffer->getBlueSize();    break;
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index c6ad075..a26edce 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -1135,6 +1135,11 @@
 
 	bool IsColorRenderable(GLint internalformat, GLint clientVersion)
 	{
+		if(IsCompressed(internalformat, clientVersion))
+		{
+			return false;
+		}
+
 		switch(internalformat)
 		{
 		case GL_RGBA4:
@@ -1201,6 +1206,11 @@
 
 	bool IsDepthRenderable(GLint internalformat, GLint clientVersion)
 	{
+		if(IsCompressed(internalformat, clientVersion))
+		{
+			return false;
+		}
+
 		switch(internalformat)
 		{
 		case GL_DEPTH_COMPONENT24:
@@ -1267,6 +1277,11 @@
 
 	bool IsStencilRenderable(GLint internalformat, GLint clientVersion)
 	{
+		if(IsCompressed(internalformat, clientVersion))
+		{
+			return false;
+		}
+
 		switch(internalformat)
 		{
 		case GL_STENCIL_INDEX8:
@@ -1353,6 +1368,7 @@
 	{
 		switch(internalformat)
 		{
+		case GL_NONE:           return 0;
 		case GL_RGBA4:          return 4;
 		case GL_RGB5_A1:        return 1;
 		case GL_RGB565:         return 0;
@@ -1392,7 +1408,7 @@
 		case GL_RGBA32UI:       return 32;
 		case GL_R11F_G11F_B10F: return 0;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1401,6 +1417,7 @@
 	{
 		switch(internalformat)
 		{
+		case GL_NONE:           return 0;
 		case GL_RGBA4:          return 4;
 		case GL_RGB5_A1:        return 5;
 		case GL_RGB565:         return 5;
@@ -1440,7 +1457,7 @@
 		case GL_RGBA32UI:       return 32;
 		case GL_R11F_G11F_B10F: return 11;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1449,6 +1466,7 @@
 	{
 		switch(internalformat)
 		{
+		case GL_NONE:           return 0;
 		case GL_RGBA4:          return 4;
 		case GL_RGB5_A1:        return 5;
 		case GL_RGB565:         return 6;
@@ -1488,7 +1506,7 @@
 		case GL_RGBA32UI:       return 32;
 		case GL_R11F_G11F_B10F: return 11;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1497,6 +1515,7 @@
 	{
 		switch(internalformat)
 		{
+		case GL_NONE:           return 0;
 		case GL_RGBA4:          return 4;
 		case GL_RGB5_A1:        return 5;
 		case GL_RGB565:         return 5;
@@ -1536,7 +1555,7 @@
 		case GL_RGBA32UI:       return 32;
 		case GL_R11F_G11F_B10F: return 10;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1553,7 +1572,7 @@
 		case GL_DEPTH24_STENCIL8:      return 24;
 		case GL_DEPTH32F_STENCIL8:     return 32;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1570,7 +1589,7 @@
 		case GL_DEPTH24_STENCIL8:      return 8;
 		case GL_DEPTH32F_STENCIL8:     return 8;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return 0;
 		}
 	}
@@ -1637,7 +1656,7 @@
 		case GL_RGB9_E5:
 			return GL_FLOAT;
 		default:
-			UNREACHABLE(internalformat);
+		//	UNREACHABLE(internalformat);
 			return GL_NONE;
 		}
 	}
@@ -2061,6 +2080,7 @@
 	{
 		switch(format)
 		{
+		case GL_NONE:                 return sw::FORMAT_NULL;
 		case GL_RGBA4:
 		case GL_RGB5_A1:
 		case GL_RGBA8:                return sw::FORMAT_A8B8G8R8;
