Index: gnothello.h
===================================================================
--- gnothello.h	(revision 7779)
+++ gnothello.h	(working copy)
@@ -30,8 +30,8 @@
 
 #define OTHER_PLAYER(w) (((w) == WHITE_TURN) ? BLACK_TURN : WHITE_TURN)
 
-#define TILEWIDTH   80
-#define TILEHEIGHT  80
+#define TILEWIDTH   (80*tile_scale/100)
+#define TILEHEIGHT  (80*tile_scale/100)
 #define GRIDWIDTH   1
 #define BOARDWIDTH  ((TILEWIDTH+GRIDWIDTH)  * 8)
 #define BOARDHEIGHT ((TILEHEIGHT+GRIDWIDTH) * 8)
Index: iagno.schemas.in
===================================================================
--- iagno.schemas.in	(revision 7779)
+++ iagno.schemas.in	(working copy)
@@ -50,6 +50,18 @@
       </schema>
 
       <schema>
+        <key>/schemas/apps/iagno/tilescale</key>
+        <applyto>/apps/iagno/tilescale</applyto>
+        <owner>iagno</owner>
+        <type>int</type>
+        <default>100</default>
+        <locale name="C">
+          <short></short>
+          <long></long>
+        </locale>
+      </schema>
+
+      <schema>
         <key>/schemas/apps/iagno/animate</key>
         <applyto>/apps/iagno/animate</applyto>
         <owner>iagno</owner>
Index: gnothello.c
===================================================================
--- gnothello.c	(revision 7779)
+++ gnothello.c	(working copy)
@@ -122,6 +122,8 @@
 
 gchar *tile_set = NULL;
 gchar *tile_set_tmp = NULL;
+gint tile_scale = 100;
+gint tile_scale_tmp = 100;
 
 GdkGC *gridGC[2] = { 0 };
 
@@ -417,7 +419,7 @@
 void
 load_pixmaps (void)
 {
-  GdkPixbuf *image;
+  GdkPixbuf *image,*image_scale=NULL;
   GError *error = NULL;
   gchar *tmp;
   gchar *fname;
@@ -442,6 +444,11 @@
   }
 
   image = gdk_pixbuf_new_from_file (fname, &error);
+  if (tile_scale != 100) {
+    image_scale = gdk_pixbuf_scale_simple(image,gdk_pixbuf_get_width(image)*tile_scale/100,gdk_pixbuf_get_height(image)*tile_scale/100,GDK_INTERP_BILINEAR);
+    gdk_pixbuf_unref(image);
+    image = image_scale;
+  }
   if (error) {
     g_warning (G_STRLOC ": gdk-pixbuf error %s\n", error->message);
     g_error_free (error);
@@ -901,10 +908,10 @@
   g_signal_connect (G_OBJECT (client), "die",
 		    G_CALLBACK (quit_game_cb), argv[0]);
 
+  load_properties ();
+
   create_window ();
 
-  load_properties ();
-
   load_pixmaps ();
 
   gtk_widget_show (window);
Index: properties.c
===================================================================
--- properties.c	(revision 7779)
+++ properties.c	(working copy)
@@ -41,6 +41,7 @@
 #define KEY_SHOW_GRID           "show_grid"
 #define KEY_FLIP_FINAL_RESULTS "flip_final_results"
 #define KEY_SOUND               "sound"
+#define KEY_TILESCALE		"tilescale"
 
 #define DEFAULT_TILESET "classic.png"
 
@@ -53,6 +54,8 @@
 extern guint white_computer_id;
 extern gchar *tile_set;
 extern gchar *tile_set_tmp;
+extern gint tile_scale;
+extern gint tile_scale_tmp;
 extern gint8 pixmaps[8][8];
 extern gint animate;
 extern gint animate_stagger;
@@ -69,6 +72,8 @@
 gint t_flip_final;
 gint t_grid;
 
+extern GtkWidget *drawing_area;
+
 static GamesFileList *theme_file_list = NULL;
 
 static void apply_changes (void);
@@ -107,6 +112,7 @@
     g_free (tile_set);
 
   tile_set = games_conf_get_string_with_default (NULL, KEY_TILESET, DEFAULT_TILESET);
+  tile_scale = games_conf_get_integer_with_default(NULL, KEY_TILESCALE, 100);
 
   animate = games_conf_get_integer (NULL, KEY_ANIMATE, NULL);
   animate = clamp_int (animate, 0, 2);
@@ -119,6 +125,7 @@
   grid = games_conf_get_boolean (NULL, KEY_SHOW_GRID, NULL);
 
   flip_final = games_conf_get_boolean (NULL, KEY_FLIP_FINAL_RESULTS, NULL);
+  
 
   switch (animate) {
   case 0:
@@ -153,6 +160,7 @@
     g_free (tile_set_tmp);
 
   tile_set_tmp = games_conf_get_string_with_default (NULL, KEY_TILESET, DEFAULT_TILESET);
+  tile_scale_tmp = games_conf_get_integer_with_default(NULL, KEY_TILESCALE, 100);
 
   t_animate = animate;
   t_animate_stagger = animate_stagger;
@@ -245,6 +253,7 @@
   games_conf_set_boolean (NULL, KEY_QUICK_MOVES, t_quick_moves);
 
   games_conf_set_string (NULL, KEY_TILESET, tile_set_tmp);
+  games_conf_set_integer(NULL, KEY_TILESCALE, tile_scale_tmp);
 
   games_conf_set_integer (NULL, KEY_ANIMATE, animate);
 
@@ -277,10 +286,18 @@
   else
     computer_speed = COMPUTER_MOVE_DELAY;
 
-  if (strcmp (tile_set, tile_set_tmp)) {
-    g_free (tile_set);
-    tile_set = g_strdup (tile_set_tmp);
+  if (strcmp (tile_set, tile_set_tmp) || (tile_scale != tile_scale_tmp)) {
+    if (strcmp (tile_set, tile_set_tmp)) {
+      g_free (tile_set);
+      tile_set = g_strdup (tile_set_tmp);
+    }
+    if (tile_scale != tile_scale_tmp) {
+      tile_scale = tile_scale_tmp;
+    }
     load_pixmaps ();
+    gtk_widget_set_size_request (GTK_WIDGET (drawing_area),
+                                   BOARDWIDTH, BOARDHEIGHT);
+    gtk_widget_queue_draw_area (GTK_WIDGET(drawing_area),0,0,BOARDWIDTH,BOARDHEIGHT);
     set_bg_color ();
     for (i = 0; i < 8; i++)
       for (j = 0; j < 8; j++)
@@ -353,6 +370,24 @@
 }
 
 void
+set_selection2 (GtkWidget * widget, gpointer data)
+{
+
+  gchar *factor;
+  int i_factor;
+
+  factor = gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget));
+
+  if (sscanf(factor,"%d",&i_factor)!=1) {
+    return;
+  }
+  
+  tile_scale_tmp = i_factor;
+
+  apply_changes ();
+}
+
+void
 free_str (GtkWidget * widget, void *data)
 {
   g_free (data);
@@ -388,14 +423,18 @@
 {
   GtkWidget *notebook;
   GtkWidget *hbox;
+  GtkWidget *hbox2;
   GtkWidget *label;
   GtkWidget *label2;
+  GtkWidget *label3;
   GtkWidget *table;
   GtkWidget *button;
   GtkWidget *frame;
   GtkWidget *vbox, *vbox2;
   GtkWidget *propbox = NULL;
   GtkWidget *option_menu;
+  GtkWidget *comboboxentry1;
+  int i;
 
   if (propbox) {
     gtk_window_present (GTK_WINDOW (propbox));
@@ -607,7 +646,31 @@
   gtk_box_pack_start (GTK_BOX (hbox), option_menu, TRUE, TRUE, 0);
 
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  
+  hbox2 = gtk_hbox_new (FALSE, 12);
+  
+  label3 = gtk_label_new_with_mnemonic (_("_Tile scale:"));
+  
+  gtk_box_pack_start (GTK_BOX (hbox2), label3, FALSE, FALSE, 0);
+  
+  comboboxentry1 = gtk_combo_box_entry_new_text();
+  
+  for (i=0; i<10; i++) {
+    char tmpstr[64];
+    sprintf(tmpstr,"%d",100-i*10);
+    gtk_combo_box_append_text(GTK_COMBO_BOX(comboboxentry1),tmpstr);
+    if (tile_scale == 100-i*10) {
+      gtk_combo_box_set_active(GTK_COMBO_BOX(comboboxentry1),i);
+    }
+  }
 
+  g_signal_connect (G_OBJECT (comboboxentry1), "changed",
+		    G_CALLBACK (set_selection2), NULL);
+  
+  gtk_box_pack_start (GTK_BOX (hbox2), comboboxentry1, FALSE, FALSE, 0);
+  
+  gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
+
   gtk_table_attach_defaults (GTK_TABLE (table), frame, 1, 2, 0, 1);
 
   gtk_notebook_append_page (GTK_NOTEBOOK (notebook), table, label);
