anchor.diff:      Ranger.Size<double> size = contentSize;
       double hWdith = size.width / 2.0;
       double hHeight = size.height / 2.0;
  +
  +    GameManager gm = GameManager.instance;
  +
  +    addChild(gm.spikeShip, 10);
  +    gm.spikeShip.configure(this);
  +    gm.spikeShip.uniformScale = gm.spikeShip.baseScale = 25.0;
  +    gm.spikeShip.visible = false;
  +
  +    Ranger.Application.instance.eventBus.on(ZoomGroup).listen(
  +    (ZoomGroup zg) {
  +      gm.spikeShip.uniformScale = gm.spikeShip.baseScale * zg.currentScale;
  +    });
   
       //---------------------------------------------------------------
       // Create nodes.
  
positive.code:     key.setPosition(0.0, -270.0);
      key.uniformScale = 3.0;
      _help.addChild(key, 10, 111);
  
      _setViewportAABBox();
  
      _listTag = _loadImage("resources/list.svg", 32, 32,
          hWdith - (hWdith * .7), hHeight - (hHeight * .1), false);
  
      _configOverlay();
  
      _configureZones();
      
      scheduleUpdate();
    }
    
    @override
    void onExit() {
      super.onExit();
      Ranger.Application app = Ranger.Application.instance;
      app.animations.stop(_listSprite, Ranger.TweenAnimation.ROTATE);
      app.animations.stop(_messageText, Ranger.TweenAnimation.TRANSLATE_Y);
    }
  
    void toggleHelp() {
      _help.visible = !_help.visible;
    }
    
    bool get dampingEnabled => _dampingEnabled;
    set dampingEnabled(bool b) {
      _dampingEnabled = b;
      
      if (dampingEnabled)
        _messageText.text = "Scroll damping turned on.";
      else
        _messageText.text = "Scroll damping turned off.";
  
negative.code:     // Note: It isn't very efficient to remap inside an update().
      // We should only remap when things change, like an Actor moving.
      remap();
      autoScroll.updateState(shipHudPosition);
    }
  
    void remap() {
  