diff --git a/common/GL_utilities.c b/common/GL_utilities.c
index f2f918a6820926b38f821370ecab75c08f26cf20..f7c770ffc7652e78eb0fba3bb9eb6fd33af53337 100644
--- a/common/GL_utilities.c
+++ b/common/GL_utilities.c
@@ -323,7 +323,7 @@ FBOstruct *initFBO2(int width, int height, int int_method, int create_depthimage
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     }
-    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8_ALPHA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
 
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fbo->texid, 0);
     if (create_depthimage!=0)
diff --git a/common/LoadTGA.c b/common/LoadTGA.c
index 6214fd5c2845ee3740b2caaa21a5b2dbfb0a7e38..4ca4dfdcb04823167e8c5254a7cf55e927fedf32 100644
--- a/common/LoadTGA.c
+++ b/common/LoadTGA.c
@@ -217,6 +217,7 @@ bool LoadTGATexture(const char *filename, TextureData *texture)	// Loads A TGA F
 {
 	char ok;
 	GLuint type = GL_RGBA;		// Set The Default GL Mode To RBGA (32 BPP)
+    GLuint internal_fmt = GL_SRGB8_ALPHA8;
 	
 	ok = LoadTGATextureData(filename, texture);	// Loads A TGA File Into Memory
 	if (!ok)
@@ -230,12 +231,14 @@ bool LoadTGATexture(const char *filename, TextureData *texture)	// Loads A TGA F
 	if (texture->bpp == 8)						// Was The TGA 8 Bits? Should be grayscale then.
 	{
 		type=GL_RED;			// If So Set The 'type' To GL_RED
+        internal_fmt = GL_RED;
 	}
 	if (texture->bpp == 24)						// Was The TGA 24 Bits?
 	{
-		type=GL_RGB;			// If So Set The 'type' To GL_RGB
+        type = GL_RGB;
+		internal_fmt=GL_SRGB8;			// If So Set The 'type' To GL_RGB
 	}
-	glTexImage2D(GL_TEXTURE_2D, 0, type, texture->width, texture->height, 0, type, GL_UNSIGNED_BYTE, texture[0].imageData);
+	glTexImage2D(GL_TEXTURE_2D, 0, internal_fmt, texture->width, texture->height, 0, type, GL_UNSIGNED_BYTE, texture[0].imageData);
 	
 	if (gMipmap)
 	{
diff --git a/src/main.cpp b/src/main.cpp
index b934e443d51ae7b10ff4eacb3693ef61a911dfba..31a8e4e930ccf4c60816640fbc6a55e2b9f916fb 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -42,6 +42,8 @@ struct Scene {
   mat4 top_view_matrix = lookAtv(vec3(0, 0, 0), vec3(0, -1, 0), vec3(0, 0, 1));
 
   void init() {
+    glEnable(GL_FRAMEBUFFER_SRGB);
+
     Model *ground_model = LoadModel("models/ground.obj");
     Model *surface_model = LoadModel("models/surface.obj");
     Model *waterfall_model = LoadModel("models/wide_cube.obj");