diff --git a/src/bitmap.cpp b/src/bitmap.cpp
index fb2e000..7b65033 100644
--- a/src/bitmap.cpp
+++ b/src/bitmap.cpp
@@ -63,7 +63,7 @@ struct BitmapPrivate
 
 	void bindFBO()
 	{
-		FBO::bind(tex.fbo);
+		FBO::bind(tex.fbo, FBO::Draw);
 	}
 
 	void pushSetViewport() const
@@ -418,7 +418,7 @@ void Bitmap::hueChange(int hue)
 	shader.setHueAdjust(hueAdj);
 	shader.setInputTexture(p->tex.tex);
 
-	FBO::bind(newTex.fbo);
+	FBO::bind(newTex.fbo, FBO::Draw);
 	TEX::bindMatrix(width(), height());
 	p->pushSetViewport();
 
diff --git a/src/gl-util.h b/src/gl-util.h
index 33d16f2..ffa214d 100644
--- a/src/gl-util.h
+++ b/src/gl-util.h
@@ -159,8 +159,7 @@ namespace FBO
 	enum Mode
 	{
 		Draw = 0,
-		Read = 1,
-		Default = 2
+		Read = 1
 	};
 
 	inline ID gen()
@@ -176,19 +175,18 @@ namespace FBO
 		glDeleteFramebuffersEXT(1, &id.gl);
 	}
 
-	inline void bind(ID id, Mode mode = Default)
+	inline void bind(ID id, Mode mode)
 	{
 		static const GLenum modes[] =
 		{
 			GL_DRAW_FRAMEBUFFER_EXT,
-			GL_READ_FRAMEBUFFER_EXT,
-			GL_FRAMEBUFFER_EXT
+			GL_READ_FRAMEBUFFER_EXT
 		};
 
 		glBindFramebufferEXT(modes[mode], id.gl);
 	}
 
-	inline void unbind(Mode mode = Default)
+	inline void unbind(Mode mode)
 	{
 		bind(ID(0), mode);
 	}
@@ -348,7 +346,7 @@ struct TEXFBO
 
 	static inline void linkFBO(TEXFBO &obj)
 	{
-		FBO::bind(obj.fbo);
+		FBO::bind(obj.fbo, FBO::Draw);
 		FBO::setTarget(obj.tex);
 	}
 
@@ -387,7 +385,7 @@ struct RBOFBO
 
 	static inline void linkFBO(RBOFBO &obj)
 	{
-		FBO::bind(obj.fbo);
+		FBO::bind(obj.fbo, FBO::Draw);
 		FBO::setTarget(obj.rbo);
 	}
 
diff --git a/src/graphics.cpp b/src/graphics.cpp
index aa6dfea..9ae825c 100644
--- a/src/graphics.cpp
+++ b/src/graphics.cpp
@@ -722,7 +722,7 @@ void Graphics::transition(int duration,
 
 		/* Draw the composed frame to a buffer first
 		 * (we need this because we're skipping PingPong) */
-		FBO::bind(p->transBuffer.fbo);
+		FBO::bind(p->transBuffer.fbo, FBO::Draw);
 		glClear(GL_COLOR_BUFFER_BIT);
 		p->screenQuad.draw();
 
diff --git a/src/tilemap.cpp b/src/tilemap.cpp
index 4f2c377..216a70c 100644
--- a/src/tilemap.cpp
+++ b/src/tilemap.cpp
@@ -478,7 +478,7 @@ struct TilemapPrivate
 		QVector<uint8_t> &animatedATs = atlas.animatedATs;
 
 		/* Clear atlas */
-		FBO::bind(atlas.gl.fbo);
+		FBO::bind(atlas.gl.fbo, FBO::Draw);
 		glState.clearColor.pushSet(Vec4());
 		glState.scissorTest.pushSet(false);
 
diff --git a/src/window.cpp b/src/window.cpp
index 0721101..80ec88e 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -418,7 +418,7 @@ struct WindowPrivate
 		TEX::allocEmpty(baseTex.width, baseTex.height);
 		TEX::unbind();
 
-		FBO::bind(baseTex.fbo);
+		FBO::bind(baseTex.fbo, FBO::Draw);
 		glState.pushSetViewport(baseTex.width, baseTex.height);
 		glState.clearColor.pushSet(Vec4());