You still haven't showed us any of the actual code around your OpenGL glDraw*** commands, which I assume are somewhere in renderOpenGL(). By now it should be more or less known that popGLStates() and pushGLStates() don't take care of almost all states that were introduced in OpenGL 1.2 and later. This includes VAO and VBO bindings. If you are leaving even a single binding or something else in another state than what SFML would expect if you didn't render using OpenGL yourself, it will produce unexpected output. If you are lucky, this would only be an error, if you start to play with buffer bindings then OpenGL won't check whether the data sources it thinks are correct actually point to the correct data (how would it check if an arbitrary pointer is valid if we can't even do it ourselves?).