move viewport stack into gui base, for use by more element types --
should probably clear the stack on gui close, just in case it starts to
grow