Buggy code:
, new int [ ] { OS . GDK_KP_7 , SWT . KEYPAD_7 } , new int [ ] { OS . GDK_KP_8 , SWT . KEYPAD_8 } , new int [ ] { OS . GDK_KP_9 , SWT . KEYPAD_9 } , new int [ ] { OS . GDK_KP_Equal , SWT . KEYPAD_EQUAL } , new int [ ] { OS . GDK_Caps_Lock , SWT . CAPS_LOCK } , new int [ ] { OS . GDK_Num_Lock , SWT . NUM_LOCK } , new int [ ] { OS . GDK_Scroll_Lock , SWT . SCROLL_LOCK } , new int [ ] { OS . GDK_Pause , SWT . PAUSE } , new int [ ] { OS . GDK_Break , SWT . BREAK } , new int [ ] { OS . GDK_Print , SWT . PRINT_SCREEN } , new int [ ] { OS . GDK_Help , SWT . HELP } } ; static Display Default ; static Display [ ] Displays = new Display [ 4 ] ; static final String PACKAGE_PREFIX = "org.eclipse.swt.widgets." ; static final Class OS_LOCK ; static final int MAJOR = 2 ; static final int MINOR = 0 ; static final int MICRO = 6 ; Object data ; String [ ] keys ; Object [ ] values ; int borderTrimWidth = 4 ; int borderTrimHeight = 4 ; int resizeTrimWidth = 6 ; int resizeTrimHeight = 6 ; int titleBorderTrimWidth = 5 ; int titleBorderTrimHeight = 28 ; int titleResizeTrimWidth = 6 ; int titleResizeTrimHeight = 29 ; int titleTrimWidth = 0 ; int titleTrimHeight = 23 ; static void setDevice ( Device device ) { } public Display ( ) { } public Display ( DeviceData data ) { } public void addFilter ( int eventType , Listener listener ) { } void addGdkEvent ( int event ) { } public void addListener ( int eventType , Listener listener ) { } void addMouseHoverTimeout ( int handle ) { } void addPopup ( Menu menu ) { } void addWidget ( int handle , Widget widget ) { } public void asyncExec ( Runnable runnable ) { } public void beep ( ) { } protected void checkDevice ( ) { } static synchronized void checkDisplay ( Thread thread , boolean multiple ) { } int checkIfEventProc ( int display , int xEvent , int userData ) { } protected void checkSubclass ( ) { } public void close ( ) { } protected void create ( DeviceData data ) { } synchronized void createDisplay ( DeviceData data ) { } Image createImage ( String name ) { int style = OS . gtk_widget_get_default_style ( ) ; byte [ ] buffer = Converter . wcsToMbcs ( null , name , true ) ; int pixbuf = OS . gtk_icon_set_render_icon ( OS . gtk_icon_factory_lookup_default ( buffer ) , style , GTK_TEXT_DIR_NONE , GTK_STATE_NORMAL , GTK_ICON_SIZE_DIALOG , 0 , 0 ) ; if ( pixbuf == 0 ) return null ; int width = OS . gdk_pixbuf_get_width ( pixbuf ) ; int height = OS . gdk_pixbuf_get_height ( pixbuf ) ; int stride = OS . gdk_pixbuf_get_rowstride ( pixbuf ) ; boolean hasAlpha = OS . gdk_pixbuf_get_has_alpha ( pixbuf ) ; int pixels = OS . gdk_pixbuf_get_pixels ( pixbuf ) ; byte [ ] data = new byte [ stride * height ] ; OS . memmove ( data , pixels , data . length ) ; OS . g_object_unref ( pixbuf ) ; ImageData imageData = null ; if ( hasAlpha ) { PaletteData palette = new PaletteData ( - 16777216 , 16711680 , 65280 ) ; imageData = new ImageData ( width , height , 32 , palette ) ; byte [ ] alpha = new byte [ stride * height ] ; for ( int y = 0 ; y < height ; y ++ ) { for ( int x = 0 ; x < width ; x ++ ) { <START_BUG> alpha [ ( ( y * height ) + x ) ] = data [ ( ( ( y * stride ) + ( x * 4 ) ) + 3 ) ] ; <END_BUG> data [ ( ( ( y * stride ) + ( x * 4 ) ) + 3 ) ] = 0 ; } } imageData . setAlphas ( 0 , 0 , ( width * height ) , alpha , 0 ) ; } else { PaletteData palette = new PaletteData ( 16711680 , 65280 , 255 ) ; imageData = new ImageData ( width , height , 24 , palette ) ; } imageData . data = data ; imageData . bytesPerLine = stride ; return new Image ( this , imageData ) ; } synchronized void deregister ( ) { } protected void destroy ( ) { } void destroyDisplay ( ) { } public static synchronized Display findDisplay ( Thread thread ) { } public void disposeExec ( Runnable runnable ) { } void error ( int code ) { } int eventProc ( int event , int data ) { } public Widget findWidget ( int handle ) { } public Widget findWidget ( int handle , int id ) { } static int fixedClassInitProc ( int g_class , int class_data ) { } static int fixedMapProc ( int handle ) { } void flushExposes ( int window , boolean all ) { } public Shell getActiveShell ( ) { } public Rectangle getBounds ( ) { } public static synchronized Display getCurrent ( ) { } int getCaretBlinkTime ( ) { } public Control getCursorControl ( ) { } boolean filterEvent ( Event event ) { } boolean filters ( int eventType ) { } int filterProc ( int xEvent , int gdkEvent , int data ) { } public Point getCursorLocation ( ) { } public Point [ ] getCursorSizes ( ) { } public Object getData ( String key ) { }

Fix:
alpha [ ( ( y * width ) + x ) ] = data [ ( ( ( y * stride ) + ( x * 4 ) ) + 3 ) ] ;