diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp
index 6473473..5e4e808 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.cpp
+++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -277,7 +277,7 @@
 				return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
 			}
 
-			if(colorbuffer->getWidth() == 0 || colorbuffer->getHeight() == 0)
+			if(colorbuffer->getWidth() == 0 || colorbuffer->getHeight() == 0 || (colorbuffer->getDepth() <= colorbuffer->getLayer()))
 			{
 				return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
 			}
diff --git a/src/OpenGL/libGLESv2/Renderbuffer.cpp b/src/OpenGL/libGLESv2/Renderbuffer.cpp
index 2f641f6..9118713 100644
--- a/src/OpenGL/libGLESv2/Renderbuffer.cpp
+++ b/src/OpenGL/libGLESv2/Renderbuffer.cpp
@@ -191,6 +191,11 @@
 	return mTexture3D->getHeight(mTexture3D->getTarget(), mLevel);
 }
 
+GLsizei RenderbufferTexture3D::getDepth() const
+{
+	return mTexture3D->getDepth(mTexture3D->getTarget(), mLevel);
+}
+
 GLenum RenderbufferTexture3D::getFormat() const
 {
 	return mTexture3D->getFormat(mTexture3D->getTarget(), mLevel);
@@ -332,6 +337,11 @@
 	return mInstance->getHeight();
 }
 
+GLsizei Renderbuffer::getDepth() const
+{
+	return mInstance->getDepth();
+}
+
 GLint Renderbuffer::getLayer() const
 {
 	return mInstance->getLayer();
diff --git a/src/OpenGL/libGLESv2/Renderbuffer.h b/src/OpenGL/libGLESv2/Renderbuffer.h
index 8f0f019..86715f9 100644
--- a/src/OpenGL/libGLESv2/Renderbuffer.h
+++ b/src/OpenGL/libGLESv2/Renderbuffer.h
@@ -47,6 +47,7 @@
 
 	virtual GLsizei getWidth() const = 0;
 	virtual GLsizei getHeight() const = 0;
+	virtual GLsizei getDepth() const { return 1; }
 	virtual GLint getLayer() const { return 0; }
 	virtual GLenum getFormat() const = 0;
 	virtual sw::Format getInternalFormat() const = 0;
@@ -101,6 +102,7 @@
 
 	virtual GLsizei getWidth() const;
 	virtual GLsizei getHeight() const;
+	virtual GLsizei getDepth() const;
 	virtual GLint getLayer() const { return mLayer; }
 	virtual GLenum getFormat() const;
 	virtual sw::Format getInternalFormat() const;
@@ -189,6 +191,7 @@
 
 	GLsizei getWidth() const;
 	GLsizei getHeight() const;
+	GLsizei getDepth() const;
 	GLint getLayer() const;
 	GLenum getFormat() const;
 	sw::Format getInternalFormat() const;
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index 5c5e1c2..98397ec 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -1583,6 +1583,7 @@
 	if(context)
 	{
 		Texture* textureObject = context->getTexture(texture);
+		GLenum textarget = GL_NONE;
 		if(texture != 0)
 		{
 			if(!textureObject)
@@ -1590,7 +1591,8 @@
 				return error(GL_INVALID_VALUE);
 			}
 
-			switch(textureObject->getTarget())
+			textarget = textureObject->getTarget();
+			switch(textarget)
 			{
 			case GL_TEXTURE_3D:
 			case GL_TEXTURE_2D_ARRAY:
@@ -1603,7 +1605,7 @@
 				return error(GL_INVALID_OPERATION);
 			}
 
-			if(textureObject->isCompressed(target, level))
+			if(textureObject->isCompressed(textarget, level))
 			{
 				return error(GL_INVALID_OPERATION);
 			}
@@ -1623,6 +1625,11 @@
 			return error(GL_INVALID_ENUM);
 		}
 
+		if(!framebuffer)
+		{
+			return error(GL_INVALID_OPERATION);
+		}
+
 		switch(attachment)
 		{
 		case GL_COLOR_ATTACHMENT0:
@@ -1657,33 +1664,17 @@
 		case GL_COLOR_ATTACHMENT29:
 		case GL_COLOR_ATTACHMENT30:
 		case GL_COLOR_ATTACHMENT31:
-			if(!framebuffer || framebuffer->getColorbufferName(attachment - GL_COLOR_ATTACHMENT0) == 0)
-			{
-				return error(GL_INVALID_OPERATION);
-			}
-			framebuffer->setColorbuffer(target, texture, attachment - GL_COLOR_ATTACHMENT0, layer, level);
+			framebuffer->setColorbuffer(textarget, texture, attachment - GL_COLOR_ATTACHMENT0, level, layer);
 			break;
 		case GL_DEPTH_ATTACHMENT:
-			if(!framebuffer || framebuffer->getDepthbufferName() == 0)
-			{
-				return error(GL_INVALID_OPERATION);
-			}
-			framebuffer->setDepthbuffer(target, texture, layer, level);
+			framebuffer->setDepthbuffer(textarget, texture, level, layer);
 			break;
 		case GL_STENCIL_ATTACHMENT:
-			if(!framebuffer || framebuffer->getStencilbufferName() == 0)
-			{
-				return error(GL_INVALID_OPERATION);
-			}
-			framebuffer->setStencilbuffer(target, texture, layer, level);
+			framebuffer->setStencilbuffer(textarget, texture, level, layer);
 			break;
 		case GL_DEPTH_STENCIL_ATTACHMENT:
-			if(!framebuffer || framebuffer->getDepthbufferName() == 0 || framebuffer->getStencilbufferName() == 0)
-			{
-				return error(GL_INVALID_OPERATION);
-			}
-			framebuffer->setDepthbuffer(target, texture, layer, level);
-			framebuffer->setStencilbuffer(target, texture, layer, level);
+			framebuffer->setDepthbuffer(textarget, texture, level, layer);
+			framebuffer->setStencilbuffer(textarget, texture, level, layer);
 			break;
 		default:
 			return error(GL_INVALID_ENUM);
