int MemoProc P((Option *opt, int n, int x, int y, char *text, int index));
 
 Option engoutOptions[] = {
-{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Label, " " },
+{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Icon, " " },
 {  0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
-{  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Label, " " },
+{  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Icon, " " },
 {  0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
 {  0,  RR|T2T|SAME_ROW,  80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
 {200, T_VSCRL | T_TOP,  500, NULL, (void*) &mem1, "", (char**) MemoProc, TextBox, "" },
 {  0,         0,         0, NULL, NULL, "", NULL, Break , "" },
-{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Label, " " },
+{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Icon, " " },
 {  0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
-{  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Label, " " },
+{  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Icon, " " },
 {  0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
 {  0,  RR|T2T|SAME_ROW,  80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
 {200, T_VSCRL | T_TOP,  500, NULL, (void*) &mem2, "", (char**) MemoProc, TextBox, "" },
 
 # define N_(s)  s
 #endif
 
-// [HGM] pixmaps of some ICONS used in the engine-outut window
-#include "pixmaps/WHITE_14.xpm"
-#include "pixmaps/BLACK_14.xpm"
-#include "pixmaps/CLEAR_14.xpm"
-#include "pixmaps/UNKNOWN_14.xpm"
-#include "pixmaps/THINKING_14.xpm"
-#include "pixmaps/PONDER_14.xpm"
-#include "pixmaps/ANALYZING_14.xpm"
-
 extern Option engoutOptions[]; // must go in header, but which?
 
 /* Module variables */
 static int currentPV, highTextStart[2], highTextEnd[2];
 #ifdef TODO_GTK
-static Pixmap icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle
 static Widget memoWidget;
 #endif
-static void *memoWidget;
+static GdkPixbuf *iconsGTK[8];
+static GtkWidget *outputFieldGTK[2][7]; // [HGM] front-end array to translate output field to window handlestatic void *memoWidget;
 
-#ifdef TODO_GTK
 static void
-ReadIcon (char *pixData[], int iconNr, Widget w)
+ReadIcon (gchar *svgFilename, int iconNr)
 {
-    int r;
-
-       if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(w),
-                                      pixData,
-                                      &(icons[iconNr]),
-                                      NULL, NULL /*&attr*/)) != 0) {
-         fprintf(stderr, _("Error %d loading icon image\n"), r);
-         exit(1);
-       }
+    char buf[MSG_SIZ];
+
+    snprintf(buf, MSG_SIZ, "%s/%s", SVGDIR, svgFilename);
+    iconsGTK[iconNr] = gdk_pixbuf_new_from_file(buf, NULL);
 }
-#endif
 
 void
 InitEngineOutput (Option *opt, Option *memo2)
 #ifdef TODO_GTK
        Widget w = opt->handle;
        memoWidget = memo2->handle;
-
-        ReadIcon(WHITE_14,   nColorWhite, w);
-        ReadIcon(BLACK_14,   nColorBlack, w);
-        ReadIcon(UNKNOWN_14, nColorUnknown, w);
-
-        ReadIcon(CLEAR_14,   nClear, w);
-        ReadIcon(PONDER_14,  nPondering, w);
-        ReadIcon(THINK_14,   nThinking, w);
-        ReadIcon(ANALYZE_14, nAnalyzing, w);
 #endif
+    ReadIcon("eo_White.svg", nColorWhite);
+    ReadIcon("eo_Black.svg", nColorBlack);
+    ReadIcon("eo_Unknown.svg", nColorUnknown);
+
+    ReadIcon("eo_Clear.svg", nClear);
+    ReadIcon("eo_Ponder.svg", nPondering);
+    ReadIcon("eo_Thinking.svg", nThinking);
+    ReadIcon("eo_Analyzing.svg", nAnalyzing);
 }
 
 void
 DrawWidgetIcon (Option *opt, int nIcon)
-{   // as we are already in X front-end, so do X-stuff here
-#ifdef TODO_GTK
-    gchar widgetname[50];
-
-    if( nIcon != 0 ) {
-        gtk_image_set_from_pixbuf(GTK_IMAGE(opt->handle), GDK_PIXBUF(iconsGTK[nIcon]));
-    }
-#endif
+{   // as we are already in GTK front-end, so do GTK-stuff here
+    if( nIcon != 0 ) gtk_image_set_from_pixbuf(GTK_IMAGE(opt->handle), GDK_PIXBUF(iconsGTK[nIcon]));
 }
 
 void
 
 SameRow (Option *opt)
 {
     return (opt->min & SAME_ROW && (opt->type == Button || opt->type == SaveButton || opt->type == Label
-                                                       || opt->type == ListBox || opt->type == BoxBegin));
+                                || opt->type == ListBox || opt->type == BoxBegin || opt->type == Icon));
 }
 
 static void
             gtk_table_attach(GTK_TABLE(table), checkbutton, left, left+r, top, top+1, GTK_FILL | GTK_EXPAND, GTK_FILL, 2, 0);
             option[i].handle = (void *)checkbutton;            
             break; 
+         case Icon:            
+            option[i].handle = (void *) (label = gtk_image_new_from_pixbuf(NULL));
+            gtk_widget_set_size_request(label, option[i].max ? option[i].max : -1, -1);
+            Pack(hbox, table, label, left, left+2, top, 0);
+            break; 
          case Label:            
             option[i].handle = (void *) (label = gtk_label_new(option[i].name));
             /* Left Justify */