This paintEvent() implementation is very inefficient.