How about drawing on a QImage instead? QImage provides pixel level access. You can draw the image on the widget with QPainter::drawImage().