Weird glColor3f results in framebuffer objects
You need to set the colour back to white before drawing the framebuffer to the screen. Otherwise, the whole framebuffer gets multiplied with red.

glBindFramebuffer(GL_FRAMEBUFFER, 0);

glColor3f(1, 1, 1); // &lt;------- add this (doesn't have to be exactly here)

glBindTexture(GL_TEXTURE_2D, fbo_tex[0]);
glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, SCRWIDTH, SCRHEIGHT, 0, -1, 1);
glMatrixMode(GL_MODELVIEW); glLoadIdentity();
{
    glBegin(GL_QUADS);
    glTexCoord2f(0, 0); glVertex3i(0, 0, 0);
    glTexCoord2f(0, 1); glVertex3i(0, SCRHEIGHT, 0);
    glTexCoord2f(1, 1); glVertex3i(SCRWIDTH, SCRHEIGHT, 0);
    glTexCoord2f(1, 0); glVertex3i(SCRWIDTH, 0, 0);
    glEnd();
}
glBindTexture(GL_TEXTURE_2D, 0);