I think struct psppire_output_view is needlessly complicated. It contains a GtkLayout which only ever has one child, namely a single GtkDrawingArea. So far as I can tell, this drawing area is destoyed and recreated on every expose event, which has to be both expensive and cumbersome.
It also contains a member called toplevel which is set but never used. Above all, I have great trouble understanding how it works. I guess this is because it is something created over ten years ago (by myself!) and has evolved over time, with a lot of contribution by Ben. We could try to clean it up, but I wonder if it might not be better to start again from scratch? If we ever want to make pivot tables interactive, this will probably be essential anyway. J'