I'm currently drawing widgets to a QGLWidget using render() inside of the QGLWidget's paintEvent. The problem I have occurs when I use setOpacity() on the painter, the performance tanks and the app becomes unusably slow until the widget is hidden.

During this time I notice that my CPU spikes, which I didn't expect because I thought this technique would make use of QOpenGLPaintEngine and thus be hardware accelerated.

Why is this not being accelerated and what can I do to speed this up?