anchor.diff:      setState(() {
         _scale = newScale;
         _position = clampPosition(delta * details.scale);
  +      _rotation = _rotationBefore + details.rotation;
  +      _rotationFocusPoint= details.focalPoint;
       });
     }
   
  
positive.code:   Offset _normalizedPosition;
    double _scale;
    double _scaleBefore;
  
    AnimationController _scaleAnimationController;
    Animation<double> _scaleAnimation;
  
    AnimationController _positionAnimationController;
    Animation<Offset> _positionAnimation;
  
    void handleScaleAnimation() {
      setState(() {
  
negative.code:       ..translate(_position.dx, _position.dy)
        ..scale(scaleStateAwareScale());
  
      final rotationMatrix = Matrix4.identity()
        ..rotateZ(_rotation);
  
      return GestureDetector(
        child: Container(
          child: Center(
            child: Transform(
              child: Transform(
                child: CustomSingleChildLayout(
                  delegate: ImagePositionDelegate(widget.imageInfo.image.width / 1,
                      widget.imageInfo.image.height / 1),
                  child: _buildHero(),
                ),
                transform: rotationMatrix,
                alignment: Alignment.center,	              origin: _rotationFocusPoint,
              ),
              transform: matrix,
              alignment: Alignment.center,
            )
          ),
          decoration: BoxDecoration(color: widget.backgroundColor),
        ),
        onDoubleTap: computeNextScaleState,
  