diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs
index cad23b5bcb5d839a7a50d9e6efa7bbeb7e8f36e7..ea617535f21c25c89aa6ae9ee20f3578de632efa 100644
--- a/Source/Core/Config/ProgramConfiguration.cs
+++ b/Source/Core/Config/ProgramConfiguration.cs
@@ -157,6 +157,7 @@ namespace CodeImp.DoomBuilder.Config
 		private bool srb2rendernights;
 		private bool srb2renderzoomtubes;
 		private bool srb2renderpolyobjects;
+		private bool snaptointeger;
 
 		// These are not stored in the configuration, only used at runtime
 		private int defaultbrightness;
@@ -301,6 +302,7 @@ namespace CodeImp.DoomBuilder.Config
 		public bool SRB2RenderNiGHTS { get { return srb2rendernights; } internal set { srb2rendernights = value; } }
 		public bool SRB2RenderZoomTubes { get { return srb2renderzoomtubes; } internal set { srb2renderzoomtubes = value; } }
 		public bool SRB2RenderPolyobjects { get { return srb2renderpolyobjects; } internal set { srb2renderpolyobjects = value; } }
+		public bool SnapToInteger { get { return snaptointeger; } internal set { snaptointeger = value; } }
 
 		//mxd. Left here for compatibility reasons...
 		public string DefaultTexture { get { return General.Map != null ? General.Map.Options.DefaultWallTexture : "-"; } set { if(General.Map != null) General.Map.Options.DefaultWallTexture = value; } }
@@ -452,6 +454,7 @@ namespace CodeImp.DoomBuilder.Config
 				srb2rendernights = cfg.ReadSetting("srb2rendernights", true);
 				srb2renderpolyobjects = cfg.ReadSetting("srb2renderpolyobjects", true);
 				srb2renderzoomtubes = cfg.ReadSetting("srb2renderzoomtubes", true);
+				snaptointeger = cfg.ReadSetting("snaptointeger", true);
 
 				//mxd. Sector defaults
 				defaultceilheight = cfg.ReadSetting("defaultceilheight", 128);
@@ -607,6 +610,7 @@ namespace CodeImp.DoomBuilder.Config
 			cfg.WriteSetting("srb2rendernights", srb2rendernights);
 			cfg.WriteSetting("srb2renderzoomtubes", srb2renderzoomtubes);
 			cfg.WriteSetting("srb2renderpolyobjects", srb2renderpolyobjects);
+			cfg.WriteSetting("snaptointeger", snaptointeger);
 
 			// Toasts
 			General.ToastManager.WriteSettings(cfg);
diff --git a/Source/Core/Map/MapSet.cs b/Source/Core/Map/MapSet.cs
index 2324dea69a820d421016b45dba071ce330d4a2a8..6d5cfe4855dff48b64ffc59d606c8b8f98765d20 100755
--- a/Source/Core/Map/MapSet.cs
+++ b/Source/Core/Map/MapSet.cs
@@ -3761,8 +3761,7 @@ namespace CodeImp.DoomBuilder.Map
 		/// <summary>This snaps all vertices to the map format accuracy. Call this to ensure the vertices are at valid coordinates.</summary>
 		public void SnapAllToAccuracy(bool usepreciseposition)
 		{
-			// SRB2 doesn't support decimals for X/Y position, but does still require VertexDecimals for other float fields/values...
-			if (General.Map.Config.EngineName == "srb2")
+			if (General.Settings.SnapToInteger)
 				usepreciseposition = false;
 
 			foreach (Vertex v in vertices) v.SnapToAccuracy(usepreciseposition);
diff --git a/Source/Core/Map/Thing.cs b/Source/Core/Map/Thing.cs
index c29922c56c621c1ab9f3536d1c354efc41946f5d..f1f174e37c69d396675e4dea531cba59b35b0a56 100755
--- a/Source/Core/Map/Thing.cs
+++ b/Source/Core/Map/Thing.cs
@@ -726,7 +726,7 @@ namespace CodeImp.DoomBuilder.Map
 		// This snaps the vertex to the map format accuracy
 		public void SnapToAccuracy()
 		{
-			SnapToAccuracy(!(General.Map.Config.EngineName == "srb2"));
+			SnapToAccuracy(!General.Settings.SnapToInteger);
 		}
 
 		// This snaps the vertex to the map format accuracy
diff --git a/Source/Core/Map/Vertex.cs b/Source/Core/Map/Vertex.cs
index 3e3042d704a36ae7d1750a495fe72ef29e58443d..15dd83be0eac2bc8eb29b0fa02d43575cf22f967 100755
--- a/Source/Core/Map/Vertex.cs
+++ b/Source/Core/Map/Vertex.cs
@@ -283,7 +283,7 @@ namespace CodeImp.DoomBuilder.Map
 		// This snaps the vertex to the map format accuracy
 		public void SnapToAccuracy()
 		{
-			SnapToAccuracy(!(General.Map.Config.EngineName == "srb2"));
+			SnapToAccuracy(!General.Settings.SnapToInteger);
 		}
 
 		// This snaps the vertex to the map format accuracy