diff --git a/src/core/prefs.c b/src/core/prefs.c
index af6e304..7e842c6 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -98,6 +98,7 @@ static int   cursor_size = 24;
 static gboolean compositing_manager = FALSE;
 static gboolean resize_with_right_button = FALSE;
 static gboolean force_fullscreen = TRUE;
+static gboolean edge_resistance = TRUE;
 
 static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
 static MetaButtonLayout button_layout;
@@ -412,6 +413,11 @@ static MetaBoolPreference preferences_bool[] =
       &resize_with_right_button,
       FALSE,
     },
+    { "/apps/metacity/general/edge_resistance",
+      META_PREF_EDGE_RESISTANCE,
+      &edge_resistance,
+      TRUE,
+    },
     { NULL, 0, NULL, FALSE },
   };
 
@@ -1757,6 +1763,9 @@ meta_preference_to_string (MetaPreference pref)
 
     case META_PREF_FORCE_FULLSCREEN:
       return "FORCE_FULLSCREEN";
+
+    case META_PREF_EDGE_RESISTANCE:
+      return "EDGE_RESISTANCE";
     }
 
   return "(unknown)";
@@ -2725,6 +2734,12 @@ meta_prefs_get_force_fullscreen (void)
   return force_fullscreen;
 }
 
+gboolean
+meta_prefs_get_edge_resistance (void)
+{
+  return edge_resistance;
+}
+
 void
 meta_prefs_set_compositing_manager (gboolean whether)
 {
diff --git a/src/core/window.c b/src/core/window.c
index ebbb047..c5888cc 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -6976,14 +6976,15 @@ update_move (MetaWindow  *window,
     new_y = old.y;
 
   /* Do any edge resistance/snapping */
-  meta_window_edge_resistance_for_move (window, 
-                                        old.x,
-                                        old.y,
-                                        &new_x,
-                                        &new_y,
-                                        update_move_timeout,
-                                        snap,
-                                        FALSE);
+  if (meta_prefs_get_edge_resistance ())
+    meta_window_edge_resistance_for_move (window, 
+					  old.x,
+					  old.y,
+					  &new_x,
+					  &new_y,
+					  update_move_timeout,
+					  snap,
+					  FALSE);
 
   if (display->compositor)
     {
diff --git a/src/include/prefs.h b/src/include/prefs.h
index a4193ff..852a1f1 100644
--- a/src/include/prefs.h
+++ b/src/include/prefs.h
@@ -60,7 +60,8 @@ typedef enum
   META_PREF_CURSOR_SIZE,
   META_PREF_COMPOSITING_MANAGER,
   META_PREF_RESIZE_WITH_RIGHT_BUTTON,
-  META_PREF_FORCE_FULLSCREEN
+  META_PREF_FORCE_FULLSCREEN,
+  META_PREF_EDGE_RESISTANCE
 } MetaPreference;
 
 typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
@@ -91,6 +92,7 @@ int                         meta_prefs_get_auto_raise_delay   (void);
 gboolean                    meta_prefs_get_reduced_resources  (void);
 gboolean                    meta_prefs_get_gnome_accessibility (void);
 gboolean                    meta_prefs_get_gnome_animations   (void);
+gboolean		    meta_prefs_get_edge_resistance    (void);
 
 const char*                 meta_prefs_get_command            (int i);
 
