diff --git a/README.md b/README.md
index 6632a525cf69d86f76120caff4294a0bb46edeae..eba076589e9d44b4b2a303a2d9a589084a18cf94 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,32 @@
-**System requirements:**
+# Ultimate Doom Builder
+
+## System requirements
 - 2.4 GHz CPU or faster (multi-core recommended)
 - Windows 7 or above
 - Graphics card with OpenGL 3.2 support
 
-**Required software on Windows:**
+### Required software on Windows
 - [Microsoft .Net Framework 4.7.2](https://dotnet.microsoft.com/download/dotnet-framework/net472)
 
-**Building on Linux:**
-
-These instructions are for Debian-based distros and were tested with Ubuntu 24.04 LTS. For others it should be similar.
+## Building on Linux
+These instructions are for Debian-based distros and were tested with Ubuntu 24.04 LTS and Arch.
 
-__Note:__ this is experimental. None of the developers are using Linux as a desktop OS, so you're pretty much on your own if you encounter any problems with running the application.
+__Note:__ this is experimental. None of the main developers are using Linux as a desktop OS, so you're pretty much on your own if you encounter any problems with running the application.
 
-- Install Mono. The `mono-complete` package from the Debian repo doesn't include `msbuild`, so you have to install `mono-complete` by following the instructions on the Mono project's website: https://www.mono-project.com/download/stable/#download-lin
-- Install additional required packages: `sudo apt install make g++ git libx11-dev libxfixes-dev mesa-common-dev`
-- Go to a directory of your choice and clone the repository (it'll automatically create an `UltimateZoneBuilder` directory in the current directory): `git clone https://github.com/jewalky/UltimateDoomBuilder.git`
+- Install Mono
+  - **Ubuntu:** The `mono-complete` package from the Debian repo doesn't include `msbuild`, so you have to install `mono-complete` by following the instructions on the Mono project's website: https://www.mono-project.com/download/stable/#download-lin
+  - **Arch:** mono (and msbuild which is also required) is in the *extra/* repo, which is enabled by default. `sudo pacman -S mono mono-msbuild`
+- Install additional required packages
+  - **Ubuntu:** `sudo apt install make g++ git libx11-dev libxfixes-dev mesa-common-dev`
+  - **Arch:** `sudo pacman -S base-devel`
+    - If you're using X11 display manager you may need to install these packages: `libx11 libxfixes`
+    - If you are not using the proprietary nvidia driver you may need to install `mesa`
+- Go to a directory of your choice and clone the repository (it'll automatically create an `UltimateZoneBuilder` directory in the current directory): `git clone https://git.do.srb2.org/STJr/UltimateZoneBuilder.git`
 - Compile UZB: `cd UltimateZoneBuilder && make`
 - Run UZB: `cd Build && ./builder`
+- Alternatively, to compile UZB in debug mode:
+  - Run `make BUILDTYPE=Debug` in the root project directory
+  - This includes a debug output terminal in the bottom panel
 
 **Links:**
 - [SRB2MB thread](https://mb.srb2.org/addons/ultimate-zone-builder.6126/)
diff --git a/Source/Core/Controls/FolderSelectDialog.cs b/Source/Core/Controls/FolderSelectDialog.cs
index 9c80ef62a8fd85cb08df71fb8f7ca95e8ea808a1..b20c8955208245693773e16cec4ebdaf2f63be06 100755
--- a/Source/Core/Controls/FolderSelectDialog.cs
+++ b/Source/Core/Controls/FolderSelectDialog.cs
@@ -283,6 +283,7 @@ namespace CodeImp.DoomBuilder.Controls
         {
             bool flag = false;
 
+#if !MONO_WINFORMS
             if (Environment.OSVersion.Version.Major >= 6)
             {
                 var r = new Reflector("System.Windows.Forms");
@@ -313,6 +314,7 @@ namespace CodeImp.DoomBuilder.Controls
             }
             else
             {
+#endif
                 var fbd = new FolderBrowserDialog();
                 fbd.Description = this.Title;
                 fbd.SelectedPath = this.InitialDirectory;
@@ -320,7 +322,9 @@ namespace CodeImp.DoomBuilder.Controls
                 if (fbd.ShowDialog(new WindowWrapper(hWndOwner)) != DialogResult.OK) return false;
                 ofd.FileName = fbd.SelectedPath;
                 flag = true;
+#if !MONO_WINFORMS
             }
+#endif
 
             return flag;
         }
diff --git a/Source/Plugins/UDBScript/API/ThingWrapper.cs b/Source/Plugins/UDBScript/API/ThingWrapper.cs
index 062a73f433edef895ee04612cfaaf00b3cf3fe9d..da23ba2c42d24c0a6a846744d4d3c626b073b56f 100644
--- a/Source/Plugins/UDBScript/API/ThingWrapper.cs
+++ b/Source/Plugins/UDBScript/API/ThingWrapper.cs
@@ -530,10 +530,10 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper
 		/// <param name="fields">UniFields of the map element</param>
 		internal override void AddManagedFields(IDictionary<string, object> fields)
 		{
-			if (thing.ScaleX != 1.0)
+			if (!fields.ContainsKey("scalex") && thing.ScaleX != 1.0)
 				fields.Add("scalex", thing.ScaleX);
 
-			if (thing.ScaleY != 1.0)
+			if (!fields.ContainsKey("scaley") && thing.ScaleY != 1.0)
 				fields.Add("scaley", thing.ScaleY);
 		}
 
@@ -549,12 +549,28 @@ namespace CodeImp.DoomBuilder.UDBScript.Wrapper
 			switch(pname)
 			{
 				case "scalex":
-					if (newvalue == null) thing.SetScale(1.0, thing.ScaleY);
-					else thing.SetScale((double)newvalue, thing.ScaleY);
+					if (newvalue == null)
+					{
+						thing.SetScale(1.0, thing.ScaleY);
+						UniFields.RemoveField(fields, "scalex");
+					}
+					else
+					{
+						thing.SetScale((double)newvalue, thing.ScaleY);
+						UniFields.SetFloat(fields, "scalex", (double)newvalue);
+					}
 					return true;
 				case "scaley":
-					if(newvalue == null) thing.SetScale(thing.ScaleX, 1.0);
-					else thing.SetScale(thing.ScaleX, (double)newvalue);
+					if (newvalue == null)
+					{
+						thing.SetScale(thing.ScaleX, 1.0);
+						UniFields.RemoveField(fields, "scaley");
+					}
+					else
+					{
+						thing.SetScale(thing.ScaleX, (double)newvalue);
+						UniFields.SetFloat(fields, "scaley", (double)newvalue);
+					}
 					return true;
 			}