code: function fixAngleEnd(start, end, grid, opt) {
  
          var step = opt.step;
  
          var diffX = end.x - start.x;
          var diffY = end.y - start.y;
  
          var gridStepsX = diffX / grid.x;
          var gridStepsY = diffY / grid.y;
  
          var distanceX = gridStepsX * step;
          var distanceY = gridStepsY * step;
  
          return new g.Point(start.x + distanceX, start.y + distanceY);
      }
docs: helper function for getDirectionAngle() corrects for grid deformation (if a point is one grid steps away from another in both dimensions, it is considered to be 45 degrees away, even if the real angle is different) this causes visible angle discrepancies if `opt.step` is much larger than `paper.gridSize`