I noticed these when playing with the demo locally:
- Use RGB32 instead of RGBA32 for the bitmap buffer. This avoids some
flickering that would sometimes occur.
- Clip the gradient fill to the widget rect rather than the painter
clip rect. In practice, the painter was always clipped to the widget
rect here, but it seems logical to say "fill widget with gradient."