=== modified file 'src/globals.c'
--- src/globals.c	2009-09-26 02:35:15 +0000
+++ src/globals.c	2009-10-24 19:13:54 +0000
@@ -22,6 +22,7 @@ int global_x = 890;
 int global_y = 515;
 int global_zoom = 3;
 int global_zoom_max = 20;
+int global_detail_zoom = 0;
 		
 int mouse_dx = 0; 
 int mouse_dy = 0;

=== modified file 'src/globals.h'
--- src/globals.h	2009-09-26 02:35:15 +0000
+++ src/globals.h	2009-10-24 19:13:54 +0000
@@ -104,6 +104,7 @@ extern int global_x;
 extern int global_y;
 extern int global_zoom;
 extern int global_zoom_max;
+extern int global_detail_zoom;
 
 extern int mouse_dx; // for mouse move pixmap
 extern int mouse_dy;

=== modified file 'src/init.c'
--- src/init.c	2009-09-26 02:35:15 +0000
+++ src/init.c	2009-10-24 19:13:54 +0000
@@ -686,7 +686,10 @@ pre_init()
 				global_gconfclient, 
 				GCONF"/global_zoom",
 				err);
-	
+	global_detail_zoom = gconf_client_get_int (
+				global_gconfclient,
+				GCONF"/global_detail_zoom",
+				err);
 
 
 

=== modified file 'src/map_management.c'
--- src/map_management.c	2009-10-04 17:46:35 +0000
+++ src/map_management.c	2009-10-26 01:07:04 +0000
@@ -35,6 +35,8 @@ load_tile(	gchar *dir,
 		int offset_x,
 		int offset_y)
 {
+	int detail_zoom=global_detail_zoom;	/* round (dpi/96.0)? */
+	int detail_scale=(int) pow (2.0, (float) detail_zoom);
 	int overzoom=0;
 	int upscale=1;
 	gboolean tile_found = FALSE;
@@ -55,7 +57,10 @@ load_tile(	gchar *dir,
 	}
 	else printf("no drawable -> NULL\n");
 
-	
+
+	upscale = detail_scale;
+	zoom -= detail_zoom;
+
 	for(overzoom=0; overzoom<=3; overzoom++)
 	{
 		g_sprintf(filename, "%s/%u/%u/%u.png", dir, zoom-overzoom, x/upscale, y/upscale);
@@ -72,7 +77,7 @@ load_tile(	gchar *dir,
 		upscale *= 2;
 	}
 	
-	if(pixbuf && overzoom)
+	if(pixbuf && upscale > 1)
 	{
 		GdkPixbuf	*pixbuf_scaled = NULL;
 
@@ -154,7 +159,7 @@ load_tile(	gchar *dir,
 		if (global_auto_download)
 		{
 			repo = global_curr_repo->data;
-			download_tile(repo,zoom,x,y);
+			download_tile(repo,zoom,x/detail_scale,y/detail_scale);
 		}
 		else
 		{

