Program: 136772
Project: 136772
Buggy source:
/** 
 * {@inheritDoc}
 */
public void paint(GC gc,Object value){
  gc.setAntialias(SWT.ON);
  gc.setTransform(_transform);
  float[] original={(float)getBounds().x - 2,(float)getBounds().y + (float)getBounds().height - 2};
  _transformInv.transform(original);
  GridColumn column=(GridColumn)value;
  gc.setFont(column.getHeaderFont());
  gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
  if (isSelected()) {
    gc.setBackground(IndicatorSelectGrid.yellow);
    gc.fillRectangle((int)original[0],(int)original[1] + 2,(int)(getBounds().height / sinRotation) + getBounds().width,(int)(getBounds().width * sinRotation));
  }
  int x=leftMargin;
  int width=getBounds().width - x;
  width-=rightMargin;
  float[] cords={(getBounds().x + width / 2 - leftMargin),(getBounds().y + (float)getBounds().height - topMargin)};
  _transformInv.transform(cords);
  if (column.getImage() != null) {
    gc.drawImage(column.getImage(),(int)cords[0] + leftMargin + imageSpacing,(int)cords[1]);
    x+=column.getImage().getBounds().width;
  }
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
  String text=column.getText();
  if (column.getAlignment() == SWT.RIGHT) {
    int len=gc.stringExtent(text).x;
    if (len < width) {
      x+=width - len;
    }
  }
 else   if (column.getAlignment() == SWT.CENTER) {
    int len=gc.stringExtent(text).x;
    if (len < width) {
      x+=(width - len) / 2;
    }
  }
  gc.drawString(text,(int)cords[0] + x + imageSpacing,(int)cords[1] + topMargin);
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
  gc.drawLine((int)(original[0]),(int)(original[1]),(int)(original[0] + getBounds().height / sinRotation - imageSpacing),(int)(original[1]));
  gc.drawLine((int)(original[0]),(int)(original[1] + getBounds().width * sinRotation),(int)(original[0] + getBounds().height / sinRotation + getBounds().width * cosRotation - imageSpacing - leftMargin),(int)(original[1] + getBounds().width * sinRotation));
  gc.setTransform(null);
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
  gc.drawLine(getBounds().x,getBounds().y + getBounds().height - 1,getBounds().x + getBounds().width,getBounds().y + getBounds().height - 1);
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}
 */
public void paint(GC gc,Object value){
  gc.setAntialias(SWT.ON);
  gc.setTransform(_transform);
  float[] original={(float)getBounds().x - 2,(float)getBounds().y + (float)getBounds().height - 2};
  _transformInv.transform(original);
  GridColumn column=(GridColumn)value;
  gc.setFont(column.getHeaderFont());
  gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
  if (isSelected()) {
    gc.setBackground(TalendColorPalette.PRIMARY_GREEN);
    gc.fillRectangle((int)original[0],(int)original[1] + 2,(int)(getBounds().height / sinRotation) + getBounds().width,(int)(getBounds().width * sinRotation));
  }
  int x=leftMargin;
  int width=getBounds().width - x;
  width-=rightMargin;
  float[] cords={(getBounds().x + width / 2 - leftMargin),(getBounds().y + (float)getBounds().height - topMargin)};
  _transformInv.transform(cords);
  if (column.getImage() != null) {
    gc.drawImage(column.getImage(),(int)cords[0] + leftMargin + imageSpacing,(int)cords[1]);
    x+=column.getImage().getBounds().width;
  }
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
  String text=column.getText();
  if (column.getAlignment() == SWT.RIGHT) {
    int len=gc.stringExtent(text).x;
    if (len < width) {
      x+=width - len;
    }
  }
 else   if (column.getAlignment() == SWT.CENTER) {
    int len=gc.stringExtent(text).x;
    if (len < width) {
      x+=(width - len) / 2;
    }
  }
  gc.drawString(text,(int)cords[0] + x + imageSpacing,(int)cords[1] + topMargin);
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
  gc.drawLine((int)(original[0]),(int)(original[1]),(int)(original[0] + getBounds().height / sinRotation - imageSpacing),(int)(original[1]));
  gc.drawLine((int)(original[0]),(int)(original[1] + getBounds().width * sinRotation),(int)(original[0] + getBounds().height / sinRotation + getBounds().width * cosRotation - imageSpacing - leftMargin),(int)(original[1] + getBounds().width * sinRotation));
  gc.setTransform(null);
  gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
  gc.drawLine(getBounds().x,getBounds().y + getBounds().height - 1,getBounds().x + getBounds().width,getBounds().y + getBounds().height - 1);
}