Index: supertux/src/gameconfig.hpp
===================================================================
--- supertux/src/gameconfig.hpp	(revision 4544)
+++ supertux/src/gameconfig.hpp	(working copy)
@@ -38,6 +38,7 @@
   int screenheight;
   int aspectwidth;
   int aspectheight;
+  float scale;
 
   bool use_fullscreen;
   bool show_fps;
Index: supertux/src/gameconfig.cpp
===================================================================
--- supertux/src/gameconfig.cpp	(revision 4544)
+++ supertux/src/gameconfig.cpp	(working copy)
@@ -46,6 +46,7 @@
   screenheight = 600;
   aspectwidth = 4;
   aspectheight = 3;
+  scale = 1.0;
 
   enable_script_debugger = false;
 }
@@ -74,6 +75,7 @@
     config_video_lisp->get("height", screenheight);
     config_video_lisp->get("aspectwidth", aspectwidth);
     config_video_lisp->get("aspectheight", aspectheight);
+    config_video_lisp->get("scale", scale);
   }
 
   const lisp::Lisp* config_audio_lisp = config_lisp->get_lisp("audio");
@@ -104,6 +106,7 @@
   writer.write_int("height", screenheight);
   writer.write_int("aspectwidth", aspectwidth);
   writer.write_int("aspectheight", aspectheight);
+  writer.write_float("scale", scale);
   writer.end_list("video");
 
   writer.start_list("audio");
Index: supertux/src/main.cpp
===================================================================
--- supertux/src/main.cpp	(revision 4544)
+++ supertux/src/main.cpp	(working copy)
@@ -214,6 +214,7 @@
             "  -w, --window                 Run in window mode\n"
             "  -g, --geometry WIDTHxHEIGHT  Run SuperTux in given resolution\n"
             "  -a, --aspect WIDTH:HEIGHT    Run SuperTux with given aspect ratio\n"
+            "  -s, --scale SCALE            Everything is SCALE times smaller\n"
             "  --disable-sfx                Disable sound effects\n"
             "  --disable-music              Disable music\n"
             "  --help                       Show this help message\n"
@@ -279,6 +280,16 @@
         print_usage(argv[0]);
         throw std::runtime_error("Invalid aspect spec, should be WIDTH:HEIGHT");
       }
+    } else if(arg == "--scale" || arg == "-s") {
+      if(i+1 >= argc) {
+        print_usage(argv[0]);
+        throw std::runtime_error("Need to specify a parameter for scale switch");
+      }
+      if(sscanf(argv[++i], "%f", &config->scale)
+         != 1) {
+        print_usage(argv[0]);
+        throw std::runtime_error("Invalid scale spec, should be a number");
+      }
     } else if(arg == "--show-fps") {
       config->show_fps = true;
     } else if(arg == "--no-show-fps") {
@@ -384,15 +395,17 @@
     log_warning << "Couldn't find icon 'images/engine/icons/supertux.xpm'" << std::endl;
   }
 #endif
+  // do not scale up
+  config->scale = (config->scale>1.0?config->scale:1.0);
 
   // use aspect ratio to calculate logical resolution
   if (config->aspectwidth > config->aspectheight) {
-  	SCREEN_HEIGHT=600;
-	SCREEN_WIDTH=600*config->aspectwidth/config->aspectheight;
+  	SCREEN_HEIGHT=(int)(600.0*config->scale);
+	SCREEN_WIDTH=SCREEN_HEIGHT*config->aspectwidth/config->aspectheight;
   }
   else {
-  	SCREEN_WIDTH=600;
-	SCREEN_HEIGHT=600*config->aspectheight/config->aspectwidth;
+  	SCREEN_WIDTH=(int)(600*config->scale);
+	SCREEN_HEIGHT=SCREEN_WIDTH*config->aspectheight/config->aspectwidth;
   }
 
   // setup opengl state and transform
Index: supertux/man/man6/supertux.6
===================================================================
--- supertux/man/man6/supertux.6	(revision 4544)
+++ supertux/man/man6/supertux.6	(working copy)
@@ -30,6 +30,9 @@
 .B \-a, \-\-aspect WIDTH:HEIGHT
 Run SuperTux with given aspect ratio (eg. \-a 4:3) 
 .TP
+.B \-s, \-\-scale SCALE
+Make everything SCALE times smaller (eg. \-s 1.0) 
+.TP
 .B \-\-disable\-sfx
 Disable sound effects
 .TP
