First off thanks for your help.

The object that draw() is a member of is stored in a list that is iterated through whenever paintGL is called. So if there are two objects derived from QPainter in the list, then draw() will be called on each of them in paintGL, and after makeCurrent() has been called on the QGLWidget being drawn to. The problem that occurs is that first the black background of the QGLWidget is replaced with a white background after calling fillRect and drawText the first time, and the text generated from this first call to draw() is replaced when draw() is called again.

Is there any way to prevent all of the area of QGLWidget outside the area drawn to by fillRect and drawText to not be touched, or to be drawn transparently? I don't want the background to be drawn white at any time. I just want the text objects to be able to accumulate on the black background.