Using screen changing functions with screens used for full screen areas isn't supported & caused corrupt screen data. Add checks that the current and overriding screen support switching, raising an error when they don't. Also add a check when restoring the context not to change any full screen areas.