anchor.diff:      _areaEntity.y = 0.0;
       d.draw(_g, entity, _areaEntity);
       if (tf != null) {
  +      _g.scale(1/tf.scale3d.x, 1/tf.scale3d.y);
  +      _g.rotate(-tf.rotation3d.z);
         _g.translate(-tf.position3d.x.toInt(), -tf.position3d.y.toInt());
  -      _g.rotate(-tf.rotation3d.z);
  -      _g.scale(1/tf.scale3d.x, 1/tf.scale3d.y);
       }
  +
  +    if (_scale != 1.0) _g.scale(_scaleI, _scaleI);
  +    _g.translate(- translateX, - translateY);
       _g.restore();
     }
   
     void end() {
       _g.restore();
  -    _gVisible.clearRect(0,0, _w, _h);
  +    _gVisible.clearRect(0, 0, _w, _h);
       _gVisible.drawImage(_g.canvas, 0, 0);
  -    _g.clearRect(0,0, _w, _h);
  +    _g.clearRect(0, 0, _w, _h);
     }
   }
   
  
positive.code:   }
  
    void processEntity(Entity entity) {
      var d = _drawMapper.get(entity);
      var tf = _transformMapper.getSafe(entity);
      if (tf != null) {
  
negative.code:     // to avoid scale and blur
      // canvas dimensions
      var canvasV = _gVisible.canvas;
      var s = scale;
      _dpr = window.devicePixelRatio;     // retina
      scale = s;
  
      _w = (_dpr * canvasV.clientWidth).round();//parseInt(canvas.style.width);
      _h = (_dpr * canvasV.clientHeight).round(); //parseInt(canvas.style.height);
  
      canvasV.width = _w;
      canvasV.height = _h;
      _gVisible.scale(_dpr, _dpr);
      _g.canvas.width = _w;
      _g.canvas.height = _h;
  
    }
  
    void begin() {
  