anchor.diff:  
     void onScaleStart(ScaleStartDetails details) {
       _scaleBefore = scaleStateAwareScale();
  +    _positionBefore = _position;
       _normalizedPosition = details.focalPoint - _position;
       _scaleAnimationController.stop();
       _positionAnimationController.stop();
  
positive.code: class _PhotoViewImageWrapperState extends State<PhotoViewImageWrapper>
      with TickerProviderStateMixin {
    Offset _position;
    Offset _normalizedPosition;
    double _scale;
    double _scaleBefore;
  
negative.code:     final double maxScale = widget.scaleBoundaries.computeMaxScale();
      final double minScale = widget.scaleBoundaries.computeMinScale();
  
  
  
      //animate back to maxScale if gesture exceeded the maxScale specified
      if (_scale > maxScale) {
        final double scaleComebackRatio = maxScale / _scale;
        animateScale(_scale, maxScale);
        final Offset clampedPosition = clampPosition(_position * scaleComebackRatio, maxScale);
        animatePosition(_position, clampedPosition);
        computeNextScaleState();
        return;
      }
  