Buggy code:
eraseItemRect . y = fullRect . y ; eraseItemRect . width = ( fullRect . x ) + ( fullRect . width ) ; eraseItemRect . height = fullRect . height ; } else { eraseItemRect = fullRect ; } GCData data = new GCData ( ) ; data . paintRect = eraseItemRect ; GC gc = GC . cocoa_new ( this , data ) ; gc . setFont ( item . getFont ( columnIndex ) ) ; if ( isSelected ) { float [ ] components = new float [ ( ( int ) ( nsSelectionForeground . numberOfComponents ( ) ) ) ] ; nsSelectionForeground . getComponents ( components ) ; Color selectionForeground = Color . cocoa_new ( display , components ) ; gc . setForeground ( selectionForeground ) ; components = new float [ ( ( int ) ( nsSelectionBackground . numberOfComponents ( ) ) ) ] ; nsSelectionBackground . getComponents ( components ) ; Color selectionBackground = Color . cocoa_new ( display , components ) ; gc . setBackground ( selectionBackground ) ; } else { gc . setForeground ( item . getForeground ( columnIndex ) ) ; gc . setBackground ( item . getBackground ( columnIndex ) ) ; } Event event = new Event ( ) ; event . item = item ; event . gc = gc ; event . index = columnIndex ; event . detail = SWT . FOREGROUND ; if ( drawBackground ) event . detail |= SWT . BACKGROUND ; if ( isSelected ) event . detail |= SWT . SELECTED ; event . x = ( ( int ) ( eraseItemRect . x ) ) ; event . y = ( ( int ) ( eraseItemRect . y ) ) ; event . width = ( ( int ) ( eraseItemRect . width ) ) ; event . height = ( ( int ) ( eraseItemRect . height ) ) ; sendEvent ( EraseItem , event ) ; gc . dispose ( ) ; if ( item . isDisposed ( ) ) return ; if ( ! ( event . doit ) ) { drawForeground = drawBackground = drawSelection = false ; } else { drawBackground = drawBackground && ( ( ( event . detail ) & ( SWT . BACKGROUND ) ) != 0 ) ; drawForeground = ( ( event . detail ) & ( SWT . FOREGROUND ) ) != 0 ; drawSelection = drawSelection && ( ( ( event . detail ) & ( SWT . SELECTED ) ) != 0 ) ; } } if ( drawSelection ) { NSGraphicsContext context = NSGraphicsContext . currentContext ( ) ; context . saveGraphicsState ( ) ; nsSelectionBackground . setFill ( ) ; NSBezierPath . fillRect ( fullRect ) ; context . restoreGraphicsState ( ) ; } else { if ( drawBackground ) { NSGraphicsContext context = NSGraphicsContext . currentContext ( ) ; context . saveGraphicsState ( ) ; float [ ] colorRGB = background . handle ; NSColor color = NSColor . colorWithDeviceRed ( colorRGB [ 0 ] , colorRGB [ 1 ] , colorRGB [ 2 ] , 1.0F ) ; color . setFill ( ) ; NSBezierPath . fillRect ( fullRect ) ; context . restoreGraphicsState ( ) ; } } if ( drawForeground ) { cell . setHighlighted ( false ) ; callSuper ( id , sel , rect , view ) ; } if ( hooks ( PaintItem ) ) { NSRect contentRect = cell . titleRectForBounds ( rect ) ; NSSize contentSize = cell . cellSizeForBounds ( rect ) ; GCData data = new GCData ( ) ; if ( ( ( columnIndex == 0 ) && ( ( ( style ) & ( SWT . CHECK ) ) != 0 ) ) && ( ( ( columnCount ) == 0 ) || ( ( tableView . columnWithIdentifier ( columns [ 0 ] . nsColumn ) ) == 1 ) ) ) { NSRect gcRect = new NSRect ( ) ; gcRect . y = fullRect . y ; <START_BUG> gcRect . width = ( fullRect . width ) + ( checkColumn . width ( ) ) ; <END_BUG> gcRect . height = fullRect . height ; data . paintRect = gcRect ; } else { data . paintRect = fullRect ; } GC gc = GC . cocoa_new ( this , data ) ; gc . setFont ( item . getFont ( columnIndex ) ) ; if ( isSelected ) { float [ ] components = new float [ ( ( int ) ( nsSelectionForeground . numberOfComponents ( ) ) ) ] ; nsSelectionForeground . getComponents ( components ) ; Color selectionForeground = Color . cocoa_new ( display , components ) ; gc . setForeground ( selectionForeground ) ; components = new float [ ( ( int ) ( nsSelectionBackground . numberOfComponents ( ) ) ) ] ; nsSelectionBackground . getComponents ( components ) ; Color selectionBackground = Color . cocoa_new ( display , components ) ; gc . setBackground ( selectionBackground ) ; gc . setBackground ( display . getSystemColor ( COLOR_GREEN ) ) ; } else { gc . setForeground ( item . getForeground ( columnIndex ) ) ; gc . setBackground ( item . getBackground ( columnIndex ) ) ; } Event event = new Event ( ) ; event . item = item ; event . gc = gc ; event . index = columnIndex ; if ( isSelected ) event . detail |= SWT . SELECTED ; event . x = ( ( int ) ( contentRect . x ) ) ; event . y = ( ( int ) ( contentRect . y ) ) ; event . width = ( ( int ) ( contentSize . width ) ) ; event . height = ( ( int ) ( fullRect . height ) ) ; sendEvent ( PaintItem , event ) ; gc . dispose ( ) ; } }

Fix:
gcRect . width = ( fullRect . x ) + ( fullRect . width ) ;