anchor.diff:  
   
       // methods
  -   handleResize () {
  -      screen
  -      ..width = window.innerWidth
  -      ..height = window.innerHeight
  -      ..offsetLeft = 0
  -      ..offsetTop = 0;
  -
  -      radius = ( screen.width + screen.height ) / 4;
  -    }
  +    handleResize () { 
  +      if ( domElement == document ) {
  +        screen
  +        ..left = 0  
  +        ..top = 0  
  +        ..width = window.innerWidth  
  +        ..height = window.innerHeight;  
  +      } else {  
  +        screen = domElement.getBoundingClientRect();
  +      }    
  +    }
  +
   
       handleEvent( event ) {
         dispatchEvent(event);
  
positive.code: 
      enabled = true;
  
      screen = new Screen( width: 0, height: 0, offsetLeft: 0, offsetTop: 0 );
      radius = ( screen.width + screen.height ) / 4;
  
      rotateSpeed = 1.0;
      zoomSpeed = 1.2;
      panSpeed = 0.3;
  
negative.code: 
      getMouseOnScreen( clientX, clientY )
        => new Vector2(
            ( clientX - screen.left ) / screen.width,
            ( clientY - screen.top ) / screen.height
        );
  
      getMouseProjectionOnBall( clientX, clientY ) {
  
        var mouseOnBall = new Vector3(
            ( clientX - screen.width * 0.5 - screen.left ) / ( screen.width * 0.5 ),
            ( screen.height * 0.5 + screen.top - clientY ) / ( screen.height * 0.5 ),
            0.0
        );
  
        var length = mouseOnBall.length;
  
        if ( noRoll ) {
  
          if ( length < Math.SQRT1_2 ) {
  
            mouseOnBall.z = Math.sqrt( 1.0 - length * length );
  
          } else {
  
            mouseOnBall.z = 0.5 / length;
            
          }
  
        } else if ( length > 1.0 ) {
  
          mouseOnBall.normalize();
  
  