diff --git a/Source/Core/Geometry/Tools.cs b/Source/Core/Geometry/Tools.cs
index 24585b916d5227da06be4db3241a969b63726c25..7ddb2b7be132cbd55316e8b44625dd65e7e899c5 100755
--- a/Source/Core/Geometry/Tools.cs
+++ b/Source/Core/Geometry/Tools.cs
@@ -1095,11 +1095,16 @@ namespace CodeImp.DoomBuilder.Geometry
 				map.EndAddRemove();
 
 				// Filter old lines and vertices by edited area
-				RectangleF editarea = MapSet.CreateArea(newlines);
-				editarea = MapSet.IncreaseArea(editarea, mergeverts);
-				editarea.Inflate(1.0f, 1.0f);
-				List<Linedef> oldlines = new List<Linedef>(MapSet.FilterByArea(alllines, ref editarea));
-				nonmergeverts = new List<Vertex>(MapSet.FilterByArea(nonmergeverts, ref editarea));
+				List<Linedef> oldlines = alllines;
+
+				if (General.Settings.MergeGeometryMode != MergeGeometryMode.CLASSIC)
+				{
+					RectangleF editarea = MapSet.CreateArea(newlines);
+					editarea = MapSet.IncreaseArea(editarea, mergeverts);
+					editarea.Inflate(1.0f, 1.0f);
+					oldlines = new List<Linedef>(MapSet.FilterByArea(alllines, ref editarea));
+					nonmergeverts = new List<Vertex>(MapSet.FilterByArea(nonmergeverts, ref editarea));
+				}
 
 				/***************************************************\
 					Find a way to close the drawing
diff --git a/Source/Core/Map/MapSet.cs b/Source/Core/Map/MapSet.cs
index 1a6fb3a17c2374d2b99a3a2e552c4b957e485076..a8b3fab59e31fea7b5cd55f15a3fcc73059c12c9 100755
--- a/Source/Core/Map/MapSet.cs
+++ b/Source/Core/Map/MapSet.cs
@@ -2182,9 +2182,8 @@ namespace CodeImp.DoomBuilder.Map
 		/// <summary>
 		/// Stitches marked geometry with non-marked geometry. Returns false when the operation failed.
 		/// </summary>
-		public bool StitchGeometry() { return StitchGeometry(MergeGeometryMode.CLASSIC, false); } //mxd. Compatibility TODO: figure out why this is needed and kill it
-		public bool StitchGeometry(MergeGeometryMode mergemode) { return StitchGeometry(mergemode, true); } //sphere: Compatibility
-		public bool StitchGeometry(MergeGeometryMode mergemode, bool fixsectors)
+		public bool StitchGeometry() { return StitchGeometry(MergeGeometryMode.CLASSIC); } //mxd. Compatibility
+		public bool StitchGeometry(MergeGeometryMode mergemode)
 		{
 			// Find vertices
 			HashSet<Vertex> movingverts = new HashSet<Vertex>(General.Map.Map.GetMarkedVertices(true));
@@ -2200,7 +2199,9 @@ namespace CodeImp.DoomBuilder.Map
 			RectangleF editarea = CreateArea(movinglines);
 			editarea = IncreaseArea(editarea, movingverts);
 			editarea.Inflate(1.0f, 1.0f);
-			fixedverts = FilterByArea(fixedverts, ref editarea);
+
+			if (mergemode != MergeGeometryMode.CLASSIC)
+				fixedverts = FilterByArea(fixedverts, ref editarea);
 
 			// Join nearby vertices
 			BeginAddRemove();
@@ -2293,7 +2294,7 @@ namespace CodeImp.DoomBuilder.Map
 			}
 
 			//mxd. Correct sector references
-			if (fixsectors)
+			if (mergemode != MergeGeometryMode.CLASSIC)
 			{
 				// Linedefs cache needs to be up to date...
 				Update(true, false);
@@ -2310,6 +2311,7 @@ namespace CodeImp.DoomBuilder.Map
 			else
 			{
 				FlipBackwardLinedefs(changedlines);
+				CorrectOuterSides(new HashSet<Linedef>(changedlines));
 			}
 			
 			return true;
diff --git a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
index 86a70d81c435a56f5ab3a52e64dc01e8a061892f..97c07d70e40c1979a06d538e77602a54c5d38239 100755
--- a/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/EditSelectionMode.cs
@@ -1815,11 +1815,16 @@ namespace CodeImp.DoomBuilder.BuilderModes
 					HashSet<Sidedef> newsides = new HashSet<Sidedef>(General.Map.Map.GetMarkedSidedefs(true));
 					HashSet<Linedef> oldlines = new HashSet<Linedef>(General.Map.Map.GetMarkedLinedefs(false));
 
+					RectangleF editarea = MapSet.CreateArea(oldlines);
+
 					// Determine area in which we are editing
-					RectangleF editarea = MapSet.CreateArea(General.Map.Map.GetMarkedLinedefs(true));
-					editarea = MapSet.IncreaseArea(editarea, General.Map.Map.GetMarkedVertices(true));
-					editarea.Inflate(1.0f, 1.0f);
-					//oldlines = MapSet.FilterByArea(oldlines, ref editarea);
+					if (General.Settings.MergeGeometryMode != MergeGeometryMode.CLASSIC)
+					{
+						editarea = MapSet.CreateArea(General.Map.Map.GetMarkedLinedefs(true));
+						editarea = MapSet.IncreaseArea(editarea, General.Map.Map.GetMarkedVertices(true));
+						editarea.Inflate(1.0f, 1.0f);
+						//oldlines = MapSet.FilterByArea(oldlines, ref editarea);
+					}
 
 					//mxd. Let's use a blockmap...
 					BlockMap<BlockEntry> blockmap = new BlockMap<BlockEntry>(editarea);