diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp
index ec96373..82c68e4 100644
--- a/src/OpenGL/libGLESv2/Texture.cpp
+++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -769,7 +769,15 @@
 
 void Texture2D::generateMipmaps()
 {
-	ASSERT(image[mBaseLevel]);
+	if(!image[mBaseLevel])
+	{
+		return;   // Image unspecified. Not an error.
+	}
+
+	if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0)
+	{
+		return;   // Zero dimension. Not an error.
+	}
 
 	int maxsize = std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight());
 	int p = log2(maxsize) + mBaseLevel;
@@ -1321,7 +1329,10 @@
 
 void TextureCubeMap::generateMipmaps()
 {
-	ASSERT(isCubeComplete());
+	if(!isCubeComplete())
+	{
+		return error(GL_INVALID_OPERATION);
+	}
 
 	int p = log2(image[0][mBaseLevel]->getWidth()) + mBaseLevel;
 	int q = std::min(p, mMaxLevel);
@@ -1739,7 +1750,15 @@
 
 void Texture3D::generateMipmaps()
 {
-	ASSERT(image[mBaseLevel]);
+	if(!image[mBaseLevel])
+	{
+		return;   // Image unspecified. Not an error.
+	}
+
+	if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0 || image[mBaseLevel]->getDepth() == 0)
+	{
+		return;   // Zero dimension. Not an error.
+	}
 
 	int maxsize = std::max(std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight()), image[mBaseLevel]->getDepth());
 	int p = log2(maxsize) + mBaseLevel;
@@ -1833,7 +1852,15 @@
 
 void Texture2DArray::generateMipmaps()
 {
-	ASSERT(image[mBaseLevel]);
+	if(!image[mBaseLevel])
+	{
+		return;   // Image unspecified. Not an error.
+	}
+
+	if(image[mBaseLevel]->getWidth() == 0 || image[mBaseLevel]->getHeight() == 0 || image[mBaseLevel]->getDepth() == 0)
+	{
+		return;   // Zero dimension. Not an error.
+	}
 
 	int depth = image[mBaseLevel]->getDepth();
 	int maxsize = std::max(image[mBaseLevel]->getWidth(), image[mBaseLevel]->getHeight());
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index fff4d7b..b863f1d 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -1386,6 +1386,11 @@
 
 	bool IsMipmappable(GLint internalformat, GLint clientVersion)
 	{
+		if(internalformat == GL_NONE)
+		{
+			return true;   // Image unspecified. Not an error.
+		}
+
 		if(IsNonNormalizedInteger(internalformat))
 		{
 			return false;
