diff --git a/Source/Core/Controls/Scripting/ScriptLumpDocumentTab.cs b/Source/Core/Controls/Scripting/ScriptLumpDocumentTab.cs
index 3c5d5636b55ecc1ed8bcb274ee96c5971d455bc1..6cfacf37b4df516f81949d9584fd83743835a456 100755
--- a/Source/Core/Controls/Scripting/ScriptLumpDocumentTab.cs
+++ b/Source/Core/Controls/Scripting/ScriptLumpDocumentTab.cs
@@ -73,6 +73,7 @@ namespace CodeImp.DoomBuilder.Controls
 			{
 				editor.SetText(stream.ToArray()); //mxd
 				editor.ClearUndoRedo();
+				editor.SetSavePoint();
 			}
 
 			// Set title
@@ -108,6 +109,8 @@ namespace CodeImp.DoomBuilder.Controls
 		// Implicit save
 		public override bool Save()
 		{
+			if (!editor.IsChanged) return false;
+
             // [ZZ] remove trailing whitespace
             RemoveTrailingWhitespace();
 
diff --git a/Source/Core/Controls/Scripting/ScriptResourceDocumentTab.cs b/Source/Core/Controls/Scripting/ScriptResourceDocumentTab.cs
index 7166e949d71524de17cd93a43ba1cbdbd5bb69e4..33328430ef78061ec2b80738134ddd0b4f93be40 100755
--- a/Source/Core/Controls/Scripting/ScriptResourceDocumentTab.cs
+++ b/Source/Core/Controls/Scripting/ScriptResourceDocumentTab.cs
@@ -48,6 +48,7 @@ namespace CodeImp.DoomBuilder.Controls
 				editor.SetText(stream.ToArray());
 				editor.Scintilla.ReadOnly = source.IsReadOnly;
 				editor.ClearUndoRedo();
+				editor.SetSavePoint();
 			}
 			else
 			{
@@ -92,7 +93,7 @@ namespace CodeImp.DoomBuilder.Controls
 		// Return true when successfully saved
 		public override bool Save()
 		{
-			if(source.IsReadOnly) return false;
+			if(source.IsReadOnly || !editor.IsChanged) return false;
 
             // [ZZ] remove trailing whitespace
             RemoveTrailingWhitespace();