The call to GraphicsExtensions.CheckGLError is redundant here as you're already calling it in the FramebufferObject class. There are also several other occurrences of this below. You just seemed to have missed this with the FramebufferObject calls, because I can see that you have cleaned this up for the RenderbufferObject calls.