Answering my own question: it seems like there was some OpenGL client state enabled by the Qt code that calls my OpenGL rendering code, which interfered with my renderer. So, don't assume anything about the current state of the context when Qt calls paintGL.