[...]it seems the rendering dimensions of the FBO are the same as the current window
Nope, these are always specified via glViewport.
It seems like you use a wrong transformation matrix (modelview or projection).
If you are going to render into the FBO a border with four lines, try the following (pseudocode):
viewport(0, 0, texSize, texSize)
modelviewMatrix = identity
projectionMatrix = identity
lineWidth = 3 (at least, to see the lines at y = 1 and x = 1)
drawLine(start=(-1, -1, 0), end=(1, -1, 0))
drawLine(start=(1, -1, 0), end=(1, 1, 0))
drawLine(start=(1, 1, 0), end=(-1, 1, 0))
drawLine(start=(-1, 1, 0), end=(-1, -1, 0))
(Note: you might as well use the "QUAD" primitive and provide the four corners to it)
Now, bind the texture to the quad you want to draw onto the screen and use proper texture coordinates (u=[0..1], v=[0..1]) on it.
Maybe I should be using PBuffers for this sort of thing?
FBOs are really easier to use and way faster, since there is not additional GL context switching involved.