The basic problem is that the most efficient way to eliminate the
duplication appears to be to do the Agg drawing in the paintEvent,
not in draw(); but then a draw() followed by copy_from_bbox may
result in a copy being made before the Agg draw has occurred.
The solution here is to do that drawing inside copy_from_bbox
when necessary.
Side note: it seems that by using the update() method, the
qt4agg draw() is acting more like draw_idle() than like the draw()
methods in the other interactive backends.