BTW, I think these calls:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
Should use glTexParameteri, not glTexParameterf as far as I know.
Then this call:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
Should be:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
"Internal format" parameter specifies the bit quantity (8 bits per pixel in this case).
You might also need to call glDrawBuffers with the color attachment you're writing to (ie, GL_COLOR_ATTACHMENT0), then with GL_BACK_LEFT when you're writing to the default framebuffer (I made the mistake before of calling it with GL_FRONT_LEFT and writing to the front buffer, messing double buffering along the way).
Also, you attach render buffers (RBOs) when you'll never need to sample from the attachment, they're sort of like the non-readable cousin of immutable textures, and used normally for the depth-stencil attachment. If you'll need to sample from the FBO, attach regular textures, then just bind the texture to sample from it.
This http://www.opengl.org/wiki/Framebuffer_Object might be helpful to read too.