diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj
index 2f6b6ca131990d22961ae75708559c690c3a1211..1c79295569d4a448c1f7db5526c62f0762e7f448 100644
--- a/Source/Core/Builder.csproj
+++ b/Source/Core/Builder.csproj
@@ -1044,6 +1044,10 @@
     <Content Include="Resources\Model.png" />
     <None Include="Resources\ModelDisabled.png" />
     <Content Include="Resources\Model_selected.png" />
+    <None Include="Resources\SearchPrev.png" />
+    <None Include="Resources\SearchNext.png" />
+    <None Include="Resources\SearchMatchCase.png" />
+    <None Include="Resources\SearchMatch.png" />
     <None Include="Resources\WordWrap.png" />
     <None Include="Resources\ThingCategory.png" />
     <None Include="Resources\ScreenshotActiveWindow.png" />
diff --git a/Source/Core/Controls/ScriptDocumentTab.cs b/Source/Core/Controls/ScriptDocumentTab.cs
index c0c35abfd4751dfed752e8d68a5460835d401290..6bc727c284fe0dd090292f60c25828e8f59289b8 100644
--- a/Source/Core/Controls/ScriptDocumentTab.cs
+++ b/Source/Core/Controls/ScriptDocumentTab.cs
@@ -112,6 +112,7 @@ namespace CodeImp.DoomBuilder.Controls
 			editor.OnOpenScriptBrowser += panel.OpenBrowseScript;
 			editor.OnOpenFindAndReplace += panel.OpenFindAndReplace;
 			editor.OnFindNext += panel.FindNext;
+			editor.OnFindPrevious += panel.FindPrevious; //mxd
 		}
 		
 		// Disposer
@@ -122,6 +123,7 @@ namespace CodeImp.DoomBuilder.Controls
 			editor.OnOpenScriptBrowser -= panel.OpenBrowseScript;
 			editor.OnOpenFindAndReplace -= panel.OpenFindAndReplace;
 			editor.OnFindNext -= panel.FindNext;
+			editor.OnFindPrevious -= panel.FindPrevious; //mxd
 			
 			base.Dispose(disposing);
 		}
@@ -235,14 +237,20 @@ namespace CodeImp.DoomBuilder.Controls
 		{
 			editor.Paste();
 		}
+
+		// Find next result (mxd)
+		public bool FindNext(FindReplaceOptions options)
+		{
+			return FindNext(options, false);
+		}
 		
 		// Find next result
-		public bool FindNext(FindReplaceOptions options)
+		public bool FindNext(FindReplaceOptions options, bool useselectionstart)
 		{
 			byte[] data = editor.GetText();
 			string text = Encoding.GetEncoding(config.CodePage).GetString(data);
 			StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;
-			int startpos = Math.Max(editor.SelectionStart, editor.SelectionEnd);
+			int startpos = (useselectionstart ? Math.Min(editor.SelectionStart, editor.SelectionEnd) : Math.Max(editor.SelectionStart, editor.SelectionEnd)); //mxd
 			bool wrapped = false;
 			
 			while(true)
@@ -288,6 +296,63 @@ namespace CodeImp.DoomBuilder.Controls
 				}
 			}
 		}
+
+		// Find previous result (mxd)
+		public bool FindPrevious(FindReplaceOptions options) 
+		{
+			byte[] data = editor.GetText();
+			string text = Encoding.GetEncoding(config.CodePage).GetString(data);
+			StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;
+			int endpos = Math.Min(editor.SelectionStart, editor.SelectionEnd);
+			int initialendpos = endpos;
+			int searchlength = endpos;
+			bool wrapped = false;
+
+			while(true) 
+			{
+				int result = text.LastIndexOf(options.FindText, endpos, searchlength, mode);
+				if(result > -1) 
+				{
+					// Check to see if it is the whole word
+					if(options.WholeWord) 
+					{
+						// Veryfy that we have found a whole word
+						string foundword = editor.GetWordAt(result + 1);
+						if(foundword.Length != options.FindText.Length) 
+						{
+							endpos = result - 1;
+							searchlength = endpos;
+							result = -1;
+						}
+					}
+
+					// Still ok?
+					if(result > -1) 
+					{
+						// Select the result
+						editor.SelectionStart = result;
+						editor.SelectionEnd = result + options.FindText.Length;
+						editor.EnsureLineVisible(editor.LineFromPosition(editor.SelectionEnd));
+						return true;
+					}
+				} 
+				else 
+				{
+					// If we haven't tried from the end, try from the end now
+					if(!wrapped) 
+					{
+						endpos = text.Length - 1;
+						searchlength = endpos - initialendpos;
+						wrapped = true;
+					} 
+					else 
+					{
+						// Can't find it
+						return false;
+					}
+				}
+			}
+		}
 		
 		// This replaces the selection with the given text
 		public void ReplaceSelection(string replacement)
diff --git a/Source/Core/Controls/ScriptEditorControl.cs b/Source/Core/Controls/ScriptEditorControl.cs
index eb521eddfc821618911022a1fb48ef03c75117f7..900b319866786f09c3f41ec8ac38c2cb16a77216 100644
--- a/Source/Core/Controls/ScriptEditorControl.cs
+++ b/Source/Core/Controls/ScriptEditorControl.cs
@@ -58,11 +58,13 @@ namespace CodeImp.DoomBuilder.Controls
 		public delegate void OpenScriptBrowserDelegate();
 		public delegate void OpenFindReplaceDelegate();
 		public delegate void FindNextDelegate();
+		public delegate void FindPreviousDelegate(); //mxd
 
 		public event ExplicitSaveTabDelegate OnExplicitSaveTab;
 		public event OpenScriptBrowserDelegate OnOpenScriptBrowser;
 		public event OpenFindReplaceDelegate OnOpenFindAndReplace;
 		public event FindNextDelegate OnFindNext;
+		public event FindPreviousDelegate OnFindPrevious; //mxd
 
 		#endregion
 
@@ -784,10 +786,10 @@ namespace CodeImp.DoomBuilder.Controls
 				e.Handled = true;
 			}
 
-			// F2 for Keyword Help
+			// F2 for Find Previous (mxd)
 			else if((e.KeyCode == Keys.F2) && (e.Modifiers == Keys.None))
 			{
-				LaunchKeywordHelp();
+				if(OnFindPrevious != null) OnFindPrevious();
 				e.Handled = true;
 			}
 
diff --git a/Source/Core/Controls/ScriptEditorPanel.Designer.cs b/Source/Core/Controls/ScriptEditorPanel.Designer.cs
index 4446d97a098090a2d692fd382fb33285444196d9..c296d654d8d953ef2d72c3e50e8bf7ff6ac2ef40 100644
--- a/Source/Core/Controls/ScriptEditorPanel.Designer.cs
+++ b/Source/Core/Controls/ScriptEditorPanel.Designer.cs
@@ -51,6 +51,12 @@ namespace CodeImp.DoomBuilder.Controls
 			this.buttonclose = new System.Windows.Forms.ToolStripButton();
 			this.buttonkeywordhelp = new System.Windows.Forms.ToolStripButton();
 			this.buttonsearch = new System.Windows.Forms.ToolStripButton();
+			this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+			this.searchbox = new System.Windows.Forms.ToolStripTextBox();
+			this.searchprev = new System.Windows.Forms.ToolStripButton();
+			this.searchnext = new System.Windows.Forms.ToolStripButton();
+			this.searchmatchcase = new System.Windows.Forms.ToolStripButton();
+			this.searchwholeword = new System.Windows.Forms.ToolStripButton();
 			this.openfile = new System.Windows.Forms.OpenFileDialog();
 			this.savefile = new System.Windows.Forms.SaveFileDialog();
 			this.splitter = new System.Windows.Forms.SplitContainer();
@@ -105,7 +111,13 @@ namespace CodeImp.DoomBuilder.Controls
             this.buttoncompile,
             this.buttonclose,
             this.buttonkeywordhelp,
-            this.buttonsearch});
+            this.buttonsearch,
+            this.toolStripSeparator5,
+            this.searchbox,
+            this.searchprev,
+            this.searchnext,
+            this.searchmatchcase,
+            this.searchwholeword});
 			this.toolbar.Location = new System.Drawing.Point(0, 0);
 			this.toolbar.Name = "toolbar";
 			this.toolbar.Size = new System.Drawing.Size(726, 25);
@@ -295,6 +307,61 @@ namespace CodeImp.DoomBuilder.Controls
 			this.buttonsearch.Text = "Open Find and Replace Window";
 			this.buttonsearch.Click += new System.EventHandler(this.buttonsearch_Click);
 			// 
+			// toolStripSeparator5
+			// 
+			this.toolStripSeparator5.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
+			this.toolStripSeparator5.Name = "toolStripSeparator5";
+			this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
+			// 
+			// searchbox
+			// 
+			this.searchbox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+			this.searchbox.Name = "searchbox";
+			this.searchbox.Size = new System.Drawing.Size(100, 25);
+			this.searchbox.TextChanged += new System.EventHandler(this.searchbox_TextChanged);
+			// 
+			// searchprev
+			// 
+			this.searchprev.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.searchprev.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchPrev;
+			this.searchprev.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.searchprev.Name = "searchprev";
+			this.searchprev.Size = new System.Drawing.Size(23, 22);
+			this.searchprev.ToolTipText = "Previous Match";
+			this.searchprev.Click += new System.EventHandler(this.searchprev_Click);
+			// 
+			// searchnext
+			// 
+			this.searchnext.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.searchnext.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchNext;
+			this.searchnext.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.searchnext.Name = "searchnext";
+			this.searchnext.Size = new System.Drawing.Size(23, 22);
+			this.searchnext.ToolTipText = "Next Match";
+			this.searchnext.Click += new System.EventHandler(this.searchnext_Click);
+			// 
+			// searchmatchcase
+			// 
+			this.searchmatchcase.CheckOnClick = true;
+			this.searchmatchcase.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.searchmatchcase.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchMatchCase;
+			this.searchmatchcase.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.searchmatchcase.Name = "searchmatchcase";
+			this.searchmatchcase.Size = new System.Drawing.Size(23, 22);
+			this.searchmatchcase.ToolTipText = "Match Case";
+			this.searchmatchcase.Click += new System.EventHandler(this.searchbox_TextChanged);
+			// 
+			// searchwholeword
+			// 
+			this.searchwholeword.CheckOnClick = true;
+			this.searchwholeword.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.searchwholeword.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchMatch;
+			this.searchwholeword.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.searchwholeword.Name = "searchwholeword";
+			this.searchwholeword.Size = new System.Drawing.Size(23, 22);
+			this.searchwholeword.ToolTipText = "Match Whole Word";
+			this.searchwholeword.Click += new System.EventHandler(this.searchbox_TextChanged);
+			// 
 			// openfile
 			// 
 			this.openfile.Title = "Open Script";
@@ -436,5 +503,11 @@ namespace CodeImp.DoomBuilder.Controls
 		private System.Windows.Forms.ToolStripButton buttonsearch;
 		private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
 		private System.Windows.Forms.ToolStripDropDownButton buttonsnippets;
+		private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+		private System.Windows.Forms.ToolStripTextBox searchbox;
+		private System.Windows.Forms.ToolStripButton searchnext;
+		private System.Windows.Forms.ToolStripButton searchprev;
+		private System.Windows.Forms.ToolStripButton searchmatchcase;
+		private System.Windows.Forms.ToolStripButton searchwholeword;
 	}
 }
diff --git a/Source/Core/Controls/ScriptEditorPanel.cs b/Source/Core/Controls/ScriptEditorPanel.cs
index 6919b4680eca64b30eb6c20e1063d974bb400eff..90aa4857ded6140c1c6862932b92738f07802b9c 100644
--- a/Source/Core/Controls/ScriptEditorPanel.cs
+++ b/Source/Core/Controls/ScriptEditorPanel.cs
@@ -18,6 +18,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.Windows.Forms;
 using CodeImp.DoomBuilder.Windows;
 using CodeImp.DoomBuilder.Config;
@@ -44,6 +45,10 @@ namespace CodeImp.DoomBuilder.Controls
 		// Find/Replace
 		private ScriptFindReplaceForm findreplaceform;
 		private FindReplaceOptions findoptions;
+
+		// Quick search bar settings (mxd)
+		private static bool matchwholeword;
+		private static bool matchcase;
 		
 		#endregion
 		
@@ -147,6 +152,11 @@ namespace CodeImp.DoomBuilder.Controls
 				}
 				if (tabs.SelectedIndex == -1) tabs.SelectedIndex = 0;
 			}
+
+			//mxd. Apply quick search settings
+			searchmatchcase.Checked = matchcase;
+			searchwholeword.Checked = matchwholeword;
+			searchbox_TextChanged(this, EventArgs.Empty);
 			
 			// If the map has remembered any compile errors, then show them
 			ShowErrors(General.Map.Errors);
@@ -202,6 +212,30 @@ namespace CodeImp.DoomBuilder.Controls
 				General.MessageBeep(MessageBeepType.Default);
 			}
 		}
+
+		// Find Previous
+		public void FindPrevious(FindReplaceOptions options) 
+		{
+			// Save the options
+			findoptions = options;
+			FindPrevious();
+		}
+
+		// Find Previous with saved options (mxd)
+		public void FindPrevious() 
+		{
+			if(!string.IsNullOrEmpty(findoptions.FindText) && (ActiveTab != null)) 
+			{
+				if (!ActiveTab.FindPrevious(findoptions))
+				{
+					General.MainWindow.DisplayStatus(StatusType.Warning, "Can't find any occurence of \"" + findoptions.FindText + "\".");
+				}
+			} 
+			else 
+			{
+				General.MessageBeep(MessageBeepType.Default);
+			}
+		}
 		
 		// Replace if possible
 		public void Replace(FindReplaceOptions options)
@@ -595,6 +629,10 @@ namespace CodeImp.DoomBuilder.Controls
 		// Called when the window that contains this panel closes
 		public void OnClose()
 		{
+			//mxd. Store quick search settings
+			matchcase = searchmatchcase.Checked;
+			matchwholeword = searchwholeword.Checked;
+			
 			// Close the sub windows now
 			if(findreplaceform != null) findreplaceform.Dispose();
 		}
@@ -853,5 +891,38 @@ namespace CodeImp.DoomBuilder.Controls
 		}
 		
 		#endregion
+
+		#region ================== Quick Search (mxd)
+
+		private FindReplaceOptions GetQuickSearchOptions()
+		{
+			return new FindReplaceOptions 
+			{
+				CaseSensitive = searchmatchcase.Checked,
+				WholeWord = searchwholeword.Checked,
+				FindText = searchbox.Text
+			};
+		}
+
+		private void searchbox_TextChanged(object sender, EventArgs e)
+		{
+			bool success = ActiveTab.FindNext(GetQuickSearchOptions(), true);
+			searchbox.BackColor = ((success || searchbox.Text.Length == 0) ? SystemColors.Window : Color.MistyRose);
+			searchnext.Enabled = success;
+			searchprev.Enabled = success;
+		}
+
+		private void searchnext_Click(object sender, EventArgs e)
+		{
+			ActiveTab.FindNext(GetQuickSearchOptions());
+		}
+
+		private void searchprev_Click(object sender, EventArgs e) 
+		{
+			ActiveTab.FindPrevious(GetQuickSearchOptions());
+		}
+
+		#endregion
+		
 	}
 }
diff --git a/Source/Core/Controls/ScriptEditorPanel.resx b/Source/Core/Controls/ScriptEditorPanel.resx
index 0ff8976c7e65e19b38a41ff0e2c8cac0a430133c..ac7358d9c7d7b409094f5164f3ecb904d1e77f1b 100644
--- a/Source/Core/Controls/ScriptEditorPanel.resx
+++ b/Source/Core/Controls/ScriptEditorPanel.resx
@@ -149,29 +149,29 @@
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
-        BQAAAk1TRnQBSQFMAwEBAAE0AQABNAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
-        ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BWgFyAbkB/wEjAT4BkwH/ARsBMQF3Af8BFAEqAW4B/wEU
-        AS4BgQH/AUkBXwGkAf8BzwHYAfIB/9wAAYEBlAHUAf8BLgFNAawB/wEcAUEBuAH/AQwBPAHQAf8BAwE5
-        AeIB/wECATYB3AH/AQYBMwG9Af8BCQEqAZYB/wEKASUBgQH/AWcBeQGyAf/UAAGJAZ0B3AH/ATsBWgG7
-        Af8BHAFMAd0B/wEJAUQB+gH/AQcBQQH5Af8BRwFyAfgB/wFHAXIB+AH/AQABOQHqAf8BAAE2AeQB/wEF
-        AS8BtgH/AQoBJQGBAf8BZwF5AbIB/8wAAc8B2AHyAf8BUAFrAcYB/wEuAVoB4wH/ARsBUgH9Af8BGwFS
-        Af0B/wFWAYEB/gH/A/4B/wP+Af8BWQGBAfoB/wEAAToB7gH/AQABNgHkAf8BBQEvAbYB/wEKASUBgQH/
-        Ac8B2AHyAf/IAAGnAbYB5QH/AU0BcAHZAf8BLAFfAv8BLQFhAv8BLAFfAv8BZQGLAv8D/gH/A/4B/wFQ
-        AXkB+wH/AQIBPgH4Af8BAAE6Ae4B/wEAATYB5AH/AQkBKgGWAf8BSQFfAaQB/8gAAXABiQHVAf8BTAFz
-        Ae4B/wE+AW0C/wFBAW8C/wE+AW0C/wE5AWoC/wFpAY4C/wFgAYYC/wEbAVIB/QH/AQ0BSAH7Af8BAgE+
-        AfgB/wEAATkB6gH/AQYBMwG9Af8BFAEuAYEB/8gAAYEBlAHRAf8BUAF5AfsB/wFSAYEC/wFWAYEB/gH/
-        AVIBgQL/AWABhgL/A/4B/wP+Af8BPgFtAv8BGAFQAfsB/wEJAUQB+gH/AQABOwHzAf8BAgE2AdwB/wEU
-        ASoBbgH/yAABigGbAdQB/wFgAYYB+wH/AWUBiwL/AWkBjgL/AWUBiwL/AZcBsQL/A/4B/wP+Af8BeQGa
-        Av8BIQFXAf0B/wENAUgB+wH/AQIBPgH4Af8BAwE5AeIB/wEbATEBdwH/yAABiQGdAdwB/wF5AZYB8gH/
-        AXkBmgL/AYEBnAL/AXkBmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEoAVwB/gH/ARgBUAH7Af8BBwFB
-        AfkB/wEMATwB0AH/ASMBPgGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
-        Af4B/wP+Af8D/gH/AbUBxwH+Af8BLAFfAv8BGwFSAf0B/wEJAUQB+gH/ARwBQQG4Af8BZAGAAboB/8gA
-        Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BLQFh
-        Av8BGwFSAf0B/wEcAUwB3QH/AS4BTQGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
-        AYcBpAL/AXkBmgL/AWUBiwL/AVIBgQL/AT4BbQL/AS0BYQL/AS4BWgHjAf8BOwFaAbsB/wF1AYwB1AH/
-        1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BeQGWAfIB/wFgAYYB+wH/AVABeQH7Af8BTAFzAe4B/wFN
-        AXAB2QH/AVABawHGAf8BgQGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
-        AdEB/wFwAYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
+        BQAAAk1TRnQBSQFMAwEBAAGEAQABhAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
+        ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BUAFoAbkB/wEZATQBkwH/AREBJwFtAf8BCgEgAWQB/wEK
+        ASQBgQH/AT8BVQGkAf8BzwHYAfIB/9wAAYEBlAHUAf8BJAFDAawB/wESATcBuAH/AQIBMgHQAf8BAAEv
+        AeIB/wEAASwB3AH/AQABKQG9Af8BAAEgAZYB/wEAARsBgQH/AV0BbwGyAf/UAAGJAZ0B3AH/ATEBUAG7
+        Af8BEgFCAd0B/wEAAToB+gH/AQABNwH5Af8BPQFoAfgB/wE9AWgB+AH/AQABLwHqAf8BAAEsAeQB/wEA
+        ASUBtgH/AQABGwGBAf8BXQFvAbIB/8wAAc8B2AHyAf8BRgFhAcYB/wEkAVAB4wH/AREBSAH9Af8BEQFI
+        Af0B/wFMAYEB/gH/A/4B/wP+Af8BTwGBAfoB/wEAATAB7gH/AQABLAHkAf8BAAElAbYB/wEAARsBgQH/
+        Ac8B2AHyAf/IAAGnAbYB5QH/AUMBZgHZAf8BIgFVAv8BIwFXAv8BIgFVAv8BWwGLAv8D/gH/A/4B/wFG
+        AW8B+wH/AQABNAH4Af8BAAEwAe4B/wEAASwB5AH/AQABIAGWAf8BPwFVAaQB/8gAAWYBiQHVAf8BQgFp
+        Ae4B/wE0AWMC/wE3AWUC/wE0AWMC/wEvAWAC/wFfAY4C/wFWAYYC/wERAUgB/QH/AQMBPgH7Af8BAAE0
+        AfgB/wEAAS8B6gH/AQABKQG9Af8BCgEkAYEB/8gAAYEBlAHRAf8BRgFvAfsB/wFIAYEC/wFMAYEB/gH/
+        AUgBgQL/AVYBhgL/A/4B/wP+Af8BNAFjAv8BDgFGAfsB/wEAAToB+gH/AQABMQHzAf8BAAEsAdwB/wEK
+        ASABZAH/yAABigGbAdQB/wFWAYYB+wH/AVsBiwL/AV8BjgL/AVsBiwL/AZcBsQL/A/4B/wP+Af8BbwGa
+        Av8BFwFNAf0B/wEDAT4B+wH/AQABNAH4Af8BAAEvAeIB/wERAScBbQH/yAABiQGdAdwB/wFvAZYB8gH/
+        AW8BmgL/AYEBnAL/AW8BmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEeAVIB/gH/AQ4BRgH7Af8BAAE3
+        AfkB/wECATIB0AH/ARkBNAGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
+        Af4B/wP+Af8D/gH/AbUBxwH+Af8BIgFVAv8BEQFIAf0B/wEAAToB+gH/ARIBNwG4Af8BWgGAAboB/8gA
+        Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BIwFX
+        Av8BEQFIAf0B/wESAUIB3QH/ASQBQwGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
+        AYcBpAL/AW8BmgL/AVsBiwL/AUgBgQL/ATQBYwL/ASMBVwL/ASQBUAHjAf8BMQFQAbsB/wFrAYwB1AH/
+        1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BbwGWAfIB/wFWAYYB+wH/AUYBbwH7Af8BQgFpAe4B/wFD
+        AWYB2QH/AUYBYQHGAf8BgQGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
+        AdEB/wFmAYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
         AQEFAAGAFwAD/wEAAv8GAAHwAQ8GAAHgAQcGAAHAAQMGAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGA
         AQEGAAGAAQEGAAGAAQEGAAGAAQEGAAHAAQMGAAHgAQcGAAHwAQ8GAAL/BgAL
 </value>
diff --git a/Source/Core/Properties/Resources.Designer.cs b/Source/Core/Properties/Resources.Designer.cs
index 637255b56f192bcc1886feb7f75757da14d94dd4..dda51f2b8fe1c6c1b2c96ae41c597e31250f6a40 100644
--- a/Source/Core/Properties/Resources.Designer.cs
+++ b/Source/Core/Properties/Resources.Designer.cs
@@ -648,6 +648,34 @@ namespace CodeImp.DoomBuilder.Properties {
             }
         }
         
+        internal static System.Drawing.Bitmap SearchMatch {
+            get {
+                object obj = ResourceManager.GetObject("SearchMatch", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap SearchMatchCase {
+            get {
+                object obj = ResourceManager.GetObject("SearchMatchCase", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap SearchNext {
+            get {
+                object obj = ResourceManager.GetObject("SearchNext", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap SearchPrev {
+            get {
+                object obj = ResourceManager.GetObject("SearchPrev", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap SlimDX_small {
             get {
                 object obj = ResourceManager.GetObject("SlimDX_small", resourceCulture);
diff --git a/Source/Core/Properties/Resources.resx b/Source/Core/Properties/Resources.resx
index 6608ae3e5b78bbfbbb46df6095b77c8417e82a61..765e6e618b77f3a352b6f115f24556ef111ec895 100644
--- a/Source/Core/Properties/Resources.resx
+++ b/Source/Core/Properties/Resources.resx
@@ -142,8 +142,8 @@
   <data name="ColorPick" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ColorPick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="ArrowDown" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\ArrowDown.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="SearchMatchCase" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SearchMatchCase.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="File" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\NewMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -202,6 +202,9 @@
   <data name="ThingStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ThingStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="Expand" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -265,6 +268,9 @@
   <data name="Cursor" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Cursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -277,6 +283,9 @@
   <data name="Status1" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Status1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="ArrowDown" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\ArrowDown.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="PasteSpecial" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\PasteSpecial.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -295,15 +304,15 @@
   <data name="Brightness" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Brightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="WordWrap" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\WordWrap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="fog" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\fog.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="InfoLine" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\InfoLine.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="Status10" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="MissingTexture" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\MissingTexture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -331,6 +340,9 @@
   <data name="Model_selected" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Model_selected.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="Collapse" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="NewScript" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\NewScript.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -340,8 +352,8 @@
   <data name="Unlink" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Unlink.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="ScriptKeyword" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\ScriptKeyword.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="Status10" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -352,15 +364,15 @@
   <data name="ClearTextures" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ClearTextures.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="Prefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Prefab.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="ImageStack" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ImageStack.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="SearchMatch" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SearchMatch.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="Hourglass" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Hourglass.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -373,8 +385,11 @@
   <data name="Status12" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Status12.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="SearchNext" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SearchNext.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="Link" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -400,8 +415,8 @@
   <data name="ViewTextureFloor" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ViewTextureFloor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="Pin" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Pin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -409,6 +424,9 @@
   <data name="ViewNormal" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="ScriptKeyword" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\ScriptKeyword.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name="MissingThing" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\MissingThing.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -451,13 +469,7 @@
   <data name="Check" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="WordWrap" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\WordWrap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Collapse" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Expand" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\Expand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="SearchPrev" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\SearchPrev.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
 </root>
\ No newline at end of file
diff --git a/Source/Core/Resources/SearchMatch.png b/Source/Core/Resources/SearchMatch.png
new file mode 100644
index 0000000000000000000000000000000000000000..d73992cfc8d2c316618bb1b73dffc1489026b3c3
Binary files /dev/null and b/Source/Core/Resources/SearchMatch.png differ
diff --git a/Source/Core/Resources/SearchMatchCase.png b/Source/Core/Resources/SearchMatchCase.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a9965e98bcbd68a90a5b68d83bc951a3f80226d
Binary files /dev/null and b/Source/Core/Resources/SearchMatchCase.png differ
diff --git a/Source/Core/Resources/SearchNext.png b/Source/Core/Resources/SearchNext.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e8df20f8acd0a51b8a372e1e2921d11936130c8
Binary files /dev/null and b/Source/Core/Resources/SearchNext.png differ
diff --git a/Source/Core/Resources/SearchPrev.png b/Source/Core/Resources/SearchPrev.png
new file mode 100644
index 0000000000000000000000000000000000000000..58043feb681c0bc0bcfaa9d95b5605b5bc4e9d20
Binary files /dev/null and b/Source/Core/Resources/SearchPrev.png differ
diff --git a/Source/Core/Windows/ScriptFindReplaceForm.Designer.cs b/Source/Core/Windows/ScriptFindReplaceForm.Designer.cs
index a6d454a687d8a66455d45742c7220629eb56c95a..b6e4f44d4339d7095be3423c20041c9a1d94c07c 100644
--- a/Source/Core/Windows/ScriptFindReplaceForm.Designer.cs
+++ b/Source/Core/Windows/ScriptFindReplaceForm.Designer.cs
@@ -38,6 +38,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.replaceallbutton = new System.Windows.Forms.Button();
 			this.closebutton = new System.Windows.Forms.Button();
 			this.replacebutton = new System.Windows.Forms.Button();
+			this.findpreviousbutton = new System.Windows.Forms.Button();
 			this.SuspendLayout();
 			// 
 			// label1
@@ -59,7 +60,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// casesensitive
 			// 
 			this.casesensitive.AutoSize = true;
-			this.casesensitive.Location = new System.Drawing.Point(93, 84);
+			this.casesensitive.Location = new System.Drawing.Point(93, 81);
 			this.casesensitive.Name = "casesensitive";
 			this.casesensitive.Size = new System.Drawing.Size(97, 18);
 			this.casesensitive.TabIndex = 2;
@@ -69,7 +70,7 @@ namespace CodeImp.DoomBuilder.Windows
 			// wordonly
 			// 
 			this.wordonly.AutoSize = true;
-			this.wordonly.Location = new System.Drawing.Point(93, 108);
+			this.wordonly.Location = new System.Drawing.Point(93, 105);
 			this.wordonly.Name = "wordonly";
 			this.wordonly.Size = new System.Drawing.Size(108, 18);
 			this.wordonly.TabIndex = 3;
@@ -94,10 +95,9 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			// findnextbutton
 			// 
-			this.findnextbutton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-			this.findnextbutton.Location = new System.Drawing.Point(257, 18);
+			this.findnextbutton.Location = new System.Drawing.Point(251, 17);
 			this.findnextbutton.Name = "findnextbutton";
-			this.findnextbutton.Size = new System.Drawing.Size(98, 25);
+			this.findnextbutton.Size = new System.Drawing.Size(80, 25);
 			this.findnextbutton.TabIndex = 4;
 			this.findnextbutton.Text = "Find Next";
 			this.findnextbutton.UseVisualStyleBackColor = true;
@@ -105,45 +105,54 @@ namespace CodeImp.DoomBuilder.Windows
 			// 
 			// replaceallbutton
 			// 
-			this.replaceallbutton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-			this.replaceallbutton.Location = new System.Drawing.Point(257, 80);
+			this.replaceallbutton.Location = new System.Drawing.Point(337, 48);
 			this.replaceallbutton.Name = "replaceallbutton";
-			this.replaceallbutton.Size = new System.Drawing.Size(98, 25);
-			this.replaceallbutton.TabIndex = 6;
+			this.replaceallbutton.Size = new System.Drawing.Size(86, 25);
+			this.replaceallbutton.TabIndex = 7;
 			this.replaceallbutton.Text = "Replace All";
 			this.replaceallbutton.UseVisualStyleBackColor = true;
 			this.replaceallbutton.Click += new System.EventHandler(this.replaceallbutton_Click);
 			// 
 			// closebutton
 			// 
-			this.closebutton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+			this.closebutton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
 			this.closebutton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-			this.closebutton.Location = new System.Drawing.Point(257, 127);
+			this.closebutton.Location = new System.Drawing.Point(325, 96);
 			this.closebutton.Name = "closebutton";
 			this.closebutton.Size = new System.Drawing.Size(98, 25);
-			this.closebutton.TabIndex = 7;
+			this.closebutton.TabIndex = 8;
 			this.closebutton.Text = "Close";
 			this.closebutton.UseVisualStyleBackColor = true;
 			this.closebutton.Click += new System.EventHandler(this.closebutton_Click);
 			// 
 			// replacebutton
 			// 
-			this.replacebutton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-			this.replacebutton.Location = new System.Drawing.Point(257, 49);
+			this.replacebutton.Location = new System.Drawing.Point(251, 48);
 			this.replacebutton.Name = "replacebutton";
-			this.replacebutton.Size = new System.Drawing.Size(98, 25);
-			this.replacebutton.TabIndex = 5;
+			this.replacebutton.Size = new System.Drawing.Size(80, 25);
+			this.replacebutton.TabIndex = 6;
 			this.replacebutton.Text = "Replace";
 			this.replacebutton.UseVisualStyleBackColor = true;
 			this.replacebutton.Click += new System.EventHandler(this.replacebutton_Click);
 			// 
+			// findpreviousbutton
+			// 
+			this.findpreviousbutton.Location = new System.Drawing.Point(337, 17);
+			this.findpreviousbutton.Name = "findpreviousbutton";
+			this.findpreviousbutton.Size = new System.Drawing.Size(86, 25);
+			this.findpreviousbutton.TabIndex = 5;
+			this.findpreviousbutton.Text = "Find Previous";
+			this.findpreviousbutton.UseVisualStyleBackColor = true;
+			this.findpreviousbutton.Click += new System.EventHandler(this.findpreviousbutton_Click);
+			// 
 			// ScriptFindReplaceForm
 			// 
 			this.AcceptButton = this.findnextbutton;
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
 			this.CancelButton = this.closebutton;
-			this.ClientSize = new System.Drawing.Size(367, 163);
+			this.ClientSize = new System.Drawing.Size(436, 127);
+			this.Controls.Add(this.findpreviousbutton);
 			this.Controls.Add(this.replacebutton);
 			this.Controls.Add(this.closebutton);
 			this.Controls.Add(this.replaceallbutton);
@@ -159,6 +168,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.MaximizeBox = false;
 			this.MinimizeBox = false;
 			this.Name = "ScriptFindReplaceForm";
+			this.Opacity = 1;
 			this.ShowIcon = false;
 			this.ShowInTaskbar = false;
 			this.Text = "Find and Replace";
@@ -180,5 +190,6 @@ namespace CodeImp.DoomBuilder.Windows
 		private System.Windows.Forms.Button replaceallbutton;
 		private System.Windows.Forms.Button closebutton;
 		private System.Windows.Forms.Button replacebutton;
+		private System.Windows.Forms.Button findpreviousbutton;
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/Windows/ScriptFindReplaceForm.cs b/Source/Core/Windows/ScriptFindReplaceForm.cs
index d4b1f75d5e4f29a598823b4dc946de18b7bbb6ca..07a3bd554d4fbb3d8abbf2bc89df7bf4547dddb7 100644
--- a/Source/Core/Windows/ScriptFindReplaceForm.cs
+++ b/Source/Core/Windows/ScriptFindReplaceForm.cs
@@ -90,6 +90,12 @@ namespace CodeImp.DoomBuilder.Windows
 		{
 			General.Map.ScriptEditor.Editor.FindNext(MakeOptions());
 		}
+
+		// Find Previous (mxd)
+		private void findpreviousbutton_Click(object sender, EventArgs e) 
+		{
+			General.Map.ScriptEditor.Editor.FindPrevious(MakeOptions());
+		}
 		
 		// Replace
 		private void replacebutton_Click(object sender, EventArgs e)
diff --git a/Source/Core/Windows/ScriptFindReplaceForm.resx b/Source/Core/Windows/ScriptFindReplaceForm.resx
index f5da54cc22c0481bd03ed449675095e5244d08ff..d0eedeb94ae4a08edefb5df16ac381a475cc92f3 100644
--- a/Source/Core/Windows/ScriptFindReplaceForm.resx
+++ b/Source/Core/Windows/ScriptFindReplaceForm.resx
@@ -123,28 +123,10 @@
   <metadata name="findtext.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="casesensitive.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="wordonly.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="replacetext.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
   <metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="findnextbutton.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="replaceallbutton.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="closebutton.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="replacebutton.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
\ No newline at end of file