Nice informative post, thanks Marcel.
I think I see something fragile in the implementation though: each #userInterfaceTheme send must absolutely be followed by another selector, else the relevant stacked object (in the scope inst. var. of the theme) will not be popped at the proper moment.
In other words, a line of code as simple as
Morph new userInterfaceTheme explore
may break things in potentially ugly ways; for one thing, even if further scope push/pop work properly, the Morph instanciated by the above code will never be GCed...
Does that make sense?
Stef