push and pop viewport to fix issue #10. might cause problems with windows, but cross that bridge when we come to it - see #10