diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs
index e8dcaa33a79bafc734c42b2bc72d7c4e6d96f291..541e8b93b54de3aeadaed37a578354e98385911b 100644
--- a/Source/Core/Config/ProgramConfiguration.cs
+++ b/Source/Core/Config/ProgramConfiguration.cs
@@ -93,6 +93,7 @@ namespace CodeImp.DoomBuilder.Config
 		private SplitLineBehavior splitlinebehavior; //mxd
 		private MergeGeometryMode mergegeomode; //mxd
 		private bool usehighlight; //mxd
+		private bool switchviewmodes; //mxd
 
 		//mxd. Script editor settings
 		private string scriptfontname;
@@ -219,6 +220,8 @@ namespace CodeImp.DoomBuilder.Config
 			} 
 		}
 
+		public bool SwitchViewModes { get { return switchviewmodes; } set { switchviewmodes = value; } } //mxd
+
 		//mxd. Script editor settings
 		public string ScriptFontName { get { return scriptfontname; } internal set { scriptfontname = value; } }
 		public int ScriptFontSize { get { return scriptfontsize; } internal set { scriptfontsize = value; } }
@@ -354,6 +357,7 @@ namespace CodeImp.DoomBuilder.Config
 				splitlinebehavior = (SplitLineBehavior)General.Clamp(cfg.ReadSetting("splitlinebehavior", 0), 0, Enum.GetValues(typeof(SplitLineBehavior)).Length - 1); //mxd
 				mergegeomode = (MergeGeometryMode)General.Clamp(cfg.ReadSetting("mergegeometrymode", (int)MergeGeometryMode.REPLACE), 0, Enum.GetValues(typeof(MergeGeometryMode)).Length - 1); //mxd
 				usehighlight = cfg.ReadSetting("usehighlight", true); //mxd
+				switchviewmodes = cfg.ReadSetting("switchviewmodes", false); //mxd
 
 				//mxd. Script editor
 				scriptfontname = cfg.ReadSetting("scriptfontname", "Courier New");
@@ -471,6 +475,7 @@ namespace CodeImp.DoomBuilder.Config
 			cfg.WriteSetting("splitlinebehavior", (int)splitlinebehavior); //mxd
 			cfg.WriteSetting("mergegeometrymode", (int)mergegeomode); //mxd
 			cfg.WriteSetting("usehighlight", usehighlight); //mxd
+			cfg.WriteSetting("switchviewmodes", switchviewmodes); //mxd
 
 			//mxd. Script editor
 			cfg.WriteSetting("scriptfontname", scriptfontname);
diff --git a/Source/Core/Editing/EditModeInfo.cs b/Source/Core/Editing/EditModeInfo.cs
index aaff8c208050f891b1b79ff080b0d22d521265ac..8e4acdcfe73bc2ae496e10d7f0e0a799961e5740 100644
--- a/Source/Core/Editing/EditModeInfo.cs
+++ b/Source/Core/Editing/EditModeInfo.cs
@@ -171,6 +171,11 @@ namespace CodeImp.DoomBuilder.Editing
 					// Switch back to last classic mode
 					General.Editing.ChangeMode(General.Editing.PreviousClassicMode.Name);
 				}
+				//mxd. Switch between view floor and view ceiling textures?
+				else if(General.Editing.Mode is ClassicMode && General.Settings.SwitchViewModes)
+				{
+					ClassicMode.SetViewMode(General.Map.Renderer2D.ViewMode == ViewMode.FloorTextures ? ViewMode.CeilingTextures : ViewMode.FloorTextures);
+				}
 			}
 		}
 		
diff --git a/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
index e4cea1172f1dd7a646e5277aeb2c39cea1e2fbde..5d7ef9e948174d03a3abb47cca3dcfedf7ab1be9 100644
--- a/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
+++ b/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
@@ -68,6 +68,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.label10 = new System.Windows.Forms.Label();
 			this.label1 = new System.Windows.Forms.Label();
 			this.heightbysidedef = new System.Windows.Forms.ComboBox();
+			this.switchviewmodes = new System.Windows.Forms.CheckBox();
 			this.tabs.SuspendLayout();
 			this.taboptions.SuspendLayout();
 			this.groupBox4.SuspendLayout();
@@ -87,7 +88,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.tabs.Name = "tabs";
 			this.tabs.Padding = new System.Drawing.Point(24, 3);
 			this.tabs.SelectedIndex = 0;
-			this.tabs.Size = new System.Drawing.Size(677, 424);
+			this.tabs.Size = new System.Drawing.Size(677, 454);
 			this.tabs.TabIndex = 0;
 			// 
 			// taboptions
@@ -100,7 +101,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.taboptions.Location = new System.Drawing.Point(4, 22);
 			this.taboptions.Name = "taboptions";
 			this.taboptions.Padding = new System.Windows.Forms.Padding(3);
-			this.taboptions.Size = new System.Drawing.Size(669, 398);
+			this.taboptions.Size = new System.Drawing.Size(669, 428);
 			this.taboptions.TabIndex = 0;
 			this.taboptions.Text = "Editing";
 			this.taboptions.UseVisualStyleBackColor = true;
@@ -117,7 +118,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.groupBox4.Controls.Add(this.label11);
 			this.groupBox4.Location = new System.Drawing.Point(6, 261);
 			this.groupBox4.Name = "groupBox4";
-			this.groupBox4.Size = new System.Drawing.Size(272, 130);
+			this.groupBox4.Size = new System.Drawing.Size(272, 160);
 			this.groupBox4.TabIndex = 2;
 			this.groupBox4.TabStop = false;
 			this.groupBox4.Text = " Default sector settings";
@@ -220,6 +221,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// 
 			// groupBox3
 			// 
+			this.groupBox3.Controls.Add(this.switchviewmodes);
 			this.groupBox3.Controls.Add(this.autodrawonedit);
 			this.groupBox3.Controls.Add(this.syncSelection);
 			this.groupBox3.Controls.Add(this.dontMoveGeometryOutsideBounds);
@@ -232,7 +234,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.groupBox3.Controls.Add(this.additiveselect);
 			this.groupBox3.Location = new System.Drawing.Point(284, 104);
 			this.groupBox3.Name = "groupBox3";
-			this.groupBox3.Size = new System.Drawing.Size(379, 287);
+			this.groupBox3.Size = new System.Drawing.Size(379, 317);
 			this.groupBox3.TabIndex = 3;
 			this.groupBox3.TabStop = false;
 			this.groupBox3.Text = " Options ";
@@ -564,11 +566,21 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.heightbysidedef.Size = new System.Drawing.Size(309, 21);
 			this.heightbysidedef.TabIndex = 0;
 			// 
+			// switchviewmodes
+			// 
+			this.switchviewmodes.AutoSize = true;
+			this.switchviewmodes.Location = new System.Drawing.Point(13, 287);
+			this.switchviewmodes.Name = "switchviewmodes";
+			this.switchviewmodes.Size = new System.Drawing.Size(317, 17);
+			this.switchviewmodes.TabIndex = 10;
+			this.switchviewmodes.Text = "Switch view modes when switching to the same Classic Mode";
+			this.switchviewmodes.UseVisualStyleBackColor = true;
+			// 
 			// PreferencesForm
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
-			this.ClientSize = new System.Drawing.Size(701, 448);
+			this.ClientSize = new System.Drawing.Size(701, 478);
 			this.Controls.Add(this.tabs);
 			this.MaximizeBox = false;
 			this.MinimizeBox = false;
@@ -632,5 +644,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		private System.Windows.Forms.Label label15;
 		private System.Windows.Forms.Label label14;
 		private System.Windows.Forms.CheckBox autodrawonedit;
+		private System.Windows.Forms.CheckBox switchviewmodes;
 	}
 }
\ No newline at end of file
diff --git a/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs b/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
index c498a64c0a80949555156ece51f736c296fb6e5a..08719e2e9e0a1d67bab2f3312b750f695321b944 100644
--- a/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
+++ b/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
@@ -57,6 +57,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			autoaligntexturesoncreate.Checked = BuilderPlug.Me.AutoAlignTextureOffsetsOnCreate; //mxd
 			dontMoveGeometryOutsideBounds.Checked = BuilderPlug.Me.DontMoveGeometryOutsideMapBoundary; //mxd
 			syncSelection.Checked = BuilderPlug.Me.SyncSelection; //mxd
+			switchviewmodes.Checked = General.Settings.SwitchViewModes; //mxd
 			autodrawonedit.Checked = BuilderPlug.Me.AutoDrawOnEdit;
 			defaultbrightness.Text = General.Settings.DefaultBrightness.ToString(); //mxd
 			defaultceilheight.Text = General.Settings.DefaultCeilingHeight.ToString();//mxd
@@ -86,6 +87,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			General.Settings.WritePluginSetting("autoaligntextureoffsetsoncreate", autoaligntexturesoncreate.Checked);//mxd
 			General.Settings.WritePluginSetting("dontmovegeometryoutsidemapboundary", dontMoveGeometryOutsideBounds.Checked);//mxd
 			General.Settings.WritePluginSetting("syncselection", syncSelection.Checked);//mxd
+			General.Settings.SwitchViewModes = switchviewmodes.Checked; //mxd
 			General.Settings.SplitLineBehavior = (SplitLineBehavior)splitbehavior.SelectedIndex;//mxd
 
 			//default sector values
diff --git a/Source/Plugins/BuilderModes/Interface/PreferencesForm.resx b/Source/Plugins/BuilderModes/Interface/PreferencesForm.resx
index ce81439427e6eef56cc2b035f13b95ec1664bebf..dda32759859984fae20989e30978c544cc968ae8 100644
--- a/Source/Plugins/BuilderModes/Interface/PreferencesForm.resx
+++ b/Source/Plugins/BuilderModes/Interface/PreferencesForm.resx
@@ -120,7 +120,4 @@
   <metadata name="tabs.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="$this.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