diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs
index 9bb8659026286a846abd77501bf83a86bd088b15..a86052779df87afb7758581653c72f0d02a4b049 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs
@@ -125,9 +125,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				setuponloadedtexture = 0;
 			}
 			
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
 			
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY);
@@ -143,6 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// If the texture gets replaced with a "hires" texture it adds more fuckery
 				if (base.Texture is HiResImage)
 					tof *= tscaleAbs;
+
+				// Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier
+				tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y));
 			}
 
 			// Determine texture coordinates plane as they would be in normal circumstances.
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs
index 7da3145fdfbf1f2661fabba825d4f9cd8f44049c..74075a979f530a0e1acfa39459679a3a378b96f0 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs
@@ -142,10 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				base.Texture = General.Map.Data.MissingTexture3D;
 				setuponloadedtexture = 0;
 			}
-			
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
+
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
 			
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY) + new Vector2D(sourceside.OffsetX, sourceside.OffsetY);
@@ -161,6 +160,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// If the texture gets replaced with a "hires" texture it adds more fuckery
 				if (base.Texture is HiResImage)
 					tof *= tscaleAbs;
+
+				// Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier
+				tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y));
 			}
 
 			// For Vavoom type 3D floors the ceiling is lower than floor and they are reversed.
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs
index e97ee0c231870e344b525f5a6db6dc7dc246e22c..a6775a4d1fef16a9d161eaa133047b8627037224 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs
@@ -98,10 +98,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				base.Texture = General.Map.Data.MissingTexture3D;
 				setuponloadedtexture = 0;
 			}
-			
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
+
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
 			
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY) + new Vector2D(sourceside.OffsetX, sourceside.OffsetY);
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs
index 537bfad0ba53163a649716bceed32b992ccb3232..0c5cf77a2c68d99f4688f3c83075730d718e080c 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs
@@ -125,9 +125,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				setuponloadedtexture = 0;
 			}
 
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
 
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY);
@@ -143,6 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// If the texture gets replaced with a "hires" texture it adds more fuckery
 				if (base.Texture is HiResImage)
 					tof *= tscaleAbs;
+
+				// Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier
+				tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y));
 			}
 
 			// Determine texture coordinates plane as they would be in normal circumstances.
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs
index 2b9b08a6ff33f1c7fc1e30654ccba39bfea3af6e..9af2c2dbbfefc6c21cc11bdb255ac25ca87791ad 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs
@@ -110,11 +110,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				base.Texture = General.Map.Data.MissingTexture3D;
 				setuponloadedtexture = 0;
 			}
-			
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
-			
+
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
+
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY);
 
@@ -129,6 +128,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// If the texture gets replaced with a "hires" texture it adds more fuckery
 				if (base.Texture is HiResImage)
 					tof *= tscaleAbs;
+
+				// Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier
+				tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y));
 			}
 
 			// Determine texture coordinates plane as they would be in normal circumstances.
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs
index 1bdc68aad6b966aa5d404cfea014cf6a08530ad7..36ffc8438e1e4959f7b2bbb84a22fe2a7c59aa03 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs
@@ -126,10 +126,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				setuponloadedtexture = 0;
 			}
 
-			// Get texture scaled size
-			Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight);
-			tsz = tsz / tscale;
-			
+			// Get texture scaled size. Round up, because that's apparently what GZDoom does
+			Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y));
+
 			// Get texture offsets
 			Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY);
 
@@ -144,6 +143,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
 				// If the texture gets replaced with a "hires" texture it adds more fuckery
 				if (base.Texture is HiResImage)
 					tof *= tscaleAbs;
+
+				// Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier
+				tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y));
 			}
 
 			// Determine texture coordinates plane as they would be in normal circumstances.