anchor.diff:      }
   
       if (data.clipToBorder) {
  -      /// save layer to clip it to border after lines drew
         canvas.saveLayer(Rect.fromLTWH(0, -40, size.width + 40, size.height + 40), Paint());
  +
  +      clipToBorder(canvas, size);
       }
   
       super.paint(canvas, size);
  
positive.code:     canvas.drawPath(barPath, barPaint);
    }
  
    /// clip the border (remove outside the border)
    void removeOutsideBorder(Canvas canvas, Size viewSize) {
      if (!data.clipToBorder) {
        return;
      }
  
      clearAroundBorderPaint.strokeWidth = barPaint.strokeWidth / 2;
      final double halfStrokeWidth = clearAroundBorderPaint.strokeWidth / 2;
      final Rect rect = Rect.fromLTRB(
        getLeftOffsetDrawSize() - halfStrokeWidth,
        getTopOffsetDrawSize() - halfStrokeWidth,
        viewSize.width -
            (getExtraNeededHorizontalSpace() - getLeftOffsetDrawSize()) +
            halfStrokeWidth,
        viewSize.height - (getExtraNeededVerticalSpace() - getTopOffsetDrawSize()) + halfStrokeWidth,
      );
      canvas.drawRect(rect, clearAroundBorderPaint);
    }
  
    void drawTitles(Canvas canvas, Size viewSize) {
      if (!targetData.titlesData.show) {
        return;
  
negative.code: 
        drawTouchTooltip(canvas, size, data.lineTouchData.touchTooltipData, topSpot, tooltipSpots);
      }
    }
  
    void clipToBorder(ui.Canvas canvas, ui.Size size,) {
      final double halfStrokeWidth = clearAroundBorderPaint.strokeWidth / 2;
      final Rect rect = Rect.fromLTRB(
        getLeftOffsetDrawSize() - halfStrokeWidth,
        getTopOffsetDrawSize() - halfStrokeWidth,
        size.width -
            (getExtraNeededHorizontalSpace() - getLeftOffsetDrawSize()) +
            halfStrokeWidth,
        size.height- (getExtraNeededVerticalSpace() - getTopOffsetDrawSize()) + halfStrokeWidth,
      );
  
      canvas.clipRect(rect, clipOp: ClipOp.intersect);
    }
  
    void drawBarLine(Canvas canvas, Size viewSize, LineChartBarData barData) {
  