Program: 73510
Project: 73510
Buggy source:
protected Bounds computeBounds() throws ChartException {
  final Bounds originalBounds=cm.getBlock().getBounds();
  Bounds bounds=(Bounds)EcoreUtil.copy(originalBounds);
  try {
    AggregationCellHandle xtabCell=ChartXTabUtil.getXtabContainerCell(handle);
    if (xtabCell != null) {
      if (xtabCell.getSpanOverOnColumn() != null) {
        CrosstabCellHandle columnCell=xtabCell.getCrosstab().getDimension(ICrosstabConstants.COLUMN_AXIS_TYPE,0).getLevel(0).getCell();
        double dWidth=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstab().getColumnWidth(columnCell));
        double dLeftBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_LEFT_WIDTH_PROP));
        double dRightBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_RIGHT_WIDTH_PROP));
        bounds.setWidth(-dWidth - dLeftBorder - dRightBorder);
      }
 else       if (xtabCell.getSpanOverOnRow() != null) {
        CrosstabCellHandle rowCell=xtabCell.getCrosstab().getDimension(ICrosstabConstants.ROW_AXIS_TYPE,0).getLevel(0).getCell();
        double dHeight=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstab().getRowHeight(rowCell));
        double dTopBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_TOP_WIDTH_PROP));
        double dBottomBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_BOTTOM_WIDTH_PROP));
        bounds.setHeight(-dHeight - dTopBorder - dBottomBorder);
      }
    }
  }
 catch (  BirtException e) {
    throw new ChartException(ChartReportItemPlugin.ID,ChartException.GENERATION,e);
  }
  return bounds;
}

Fixed version (ground truth):
protected Bounds computeBounds() throws ChartException {
  final Bounds originalBounds=cm.getBlock().getBounds();
  Bounds bounds=(Bounds)EcoreUtil.copy(originalBounds);
  try {
    AggregationCellHandle xtabCell=ChartXTabUtil.getXtabContainerCell(handle);
    if (xtabCell != null) {
      if (xtabCell.getSpanOverOnColumn() != null) {
        CrosstabCellHandle columnCell=ChartXTabUtil.getInnermostLevelCell(xtabCell.getCrosstab(),ICrosstabConstants.COLUMN_AXIS_TYPE);
        double dWidth=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstab().getColumnWidth(columnCell));
        double dLeftBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_LEFT_WIDTH_PROP));
        double dRightBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_RIGHT_WIDTH_PROP));
        bounds.setWidth(-dWidth - dLeftBorder - dRightBorder);
      }
 else       if (xtabCell.getSpanOverOnRow() != null) {
        CrosstabCellHandle rowCell=ChartXTabUtil.getInnermostLevelCell(xtabCell.getCrosstab(),ICrosstabConstants.ROW_AXIS_TYPE);
        double dHeight=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstab().getRowHeight(rowCell));
        double dTopBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_TOP_WIDTH_PROP));
        double dBottomBorder=ChartReportItemUtil.convertToPoints(xtabCell.getCrosstabHandle().getDimensionProperty(StyleHandle.BORDER_BOTTOM_WIDTH_PROP));
        bounds.setHeight(-dHeight - dTopBorder - dBottomBorder);
      }
    }
  }
 catch (  BirtException e) {
    throw new ChartException(ChartReportItemPlugin.ID,ChartException.GENERATION,e);
  }
  return bounds;
}