anchor.diff:                text: span,
                 textAlign: TextAlign.center,
                 textDirection: TextDirection.ltr,
  -              textScaleFactor: textScale);
  -          tp.layout(maxWidth: getExtraNeededHorizontalSpace());
  +              textScaleFactor: holder.textScale);
  +          tp.layout(maxWidth: getExtraNeededHorizontalSpace(holder));
             x -= tp.width + leftTitles.margin;
             y -= tp.height / 2;
             canvasWrapper.save();
  
positive.code:     return groupBarsPosition;
    }
  
    void _drawBars(CanvasWrapper canvasWrapper, List<_GroupBarsPosition> groupBarsPosition) {
      final viewSize = canvasWrapper.size;
      final drawSize = getChartUsableDrawSize(viewSize);
  
      for (var i = 0; i < data.barGroups.length; i++) {
        final barGroup = data.barGroups[i];
  
negative.code:   /// maybe we want to show both top and bottom titles,
    /// then just the top titles will effect on this function.
    @override
    double getTopOffsetDrawSize(PaintHolder<BarChartData> holder) {
      final data = holder.data;
      var sum = super.getTopOffsetDrawSize(holder);
  
      final topTitles = data.titlesData.topTitles;
      if (data.titlesData.show && topTitles.showTitles) {
  