diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
index ba775523b4d14da2489dfdcd09bcbbfea7d8b19d..5656740567beb123f707735860b0932693c43ef3 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
@@ -123,6 +123,27 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			float offsetx = dragdelta.x;
 			float offsety = dragdelta.y;
 
+			bool lockX = General.Interface.CtrlState && !General.Interface.ShiftState;
+			bool lockY = !General.Interface.CtrlState && General.Interface.ShiftState;
+
+			if(lockX || lockY) {
+				float camAngle = Angle2D.RadToDeg(General.Map.VisualCamera.AngleXY);
+				
+				if(camAngle > 315 || camAngle < 46) {
+					if(lockX) offsetx = 0;
+					if(lockY) offsety = 0;
+				} else if(camAngle > 225) {
+					if(lockX) offsety = 0;
+					if(lockY) offsetx = 0;
+				} else if(camAngle > 135) {
+					if(lockX) offsetx = 0;
+					if(lockY) offsety = 0;
+				} else {
+					if(lockX) offsety = 0;
+					if(lockY) offsetx = 0;
+				}
+			}
+
             //mxd. Modify offsets based on surface and camera angles
             if (General.Map.UDMF) {
 				float angle = 0;
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
index a6e68d21befb40463ae026800092383b9c87ea80..59aff4859f63394e4dad0b9d0d3af5d64f4aaf84 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
@@ -1026,8 +1026,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if((Math.Sign(dragdeltaz.x) < 0) || (Math.Sign(dragdeltaz.y) < 0) || (Math.Sign(dragdeltaz.z) < 0)) offsety = -offsety;
 			
 			// Apply offsets
-			int newoffsetx = startoffsetx - (int)Math.Round(offsetx);
-			int newoffsety = startoffsety + (int)Math.Round(offsety);
+			int newoffsetx = (General.Interface.CtrlState && !General.Interface.ShiftState ? startoffsetx : startoffsetx - (int)Math.Round(offsetx)); //mxd
+			int newoffsety = (!General.Interface.CtrlState && General.Interface.ShiftState ? startoffsety : startoffsety + (int)Math.Round(offsety)); //mxd
 			mode.ApplyTextureOffsetChange(prevoffsetx - newoffsetx, prevoffsety - newoffsety);
 			prevoffsetx = newoffsetx;
 			prevoffsety = newoffsety;
diff --git a/Source/Plugins/ColorPicker/Controls/ColorPickerControl.cs b/Source/Plugins/ColorPicker/Controls/ColorPickerControl.cs
index 7750bb883cfb28ce2303df7b0ceb248cf61fb72b..21ad132675f19c5c870cb95cf30b36173b1fdb85 100644
--- a/Source/Plugins/ColorPicker/Controls/ColorPickerControl.cs
+++ b/Source/Plugins/ColorPicker/Controls/ColorPickerControl.cs
@@ -247,19 +247,19 @@ namespace CodeImp.DoomBuilder.ColorPicker.Controls {
 
                 float c;
                 if (!float.TryParse(parts[0].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out c)) return;
-                rgb.Red = (int)(c * 255);
+                rgb.Red = (int)(General.Clamp(Math.Abs(c), 0.0f, 1.0f) * 255);
 
                 if (!float.TryParse(parts[1].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out c)) return;
-                rgb.Green = (int)(c * 255);
+				rgb.Green = (int)(General.Clamp(Math.Abs(c), 0.0f, 1.0f) * 255);
 
                 if (!float.TryParse(parts[2].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out c)) return;
-                rgb.Blue = (int)(c * 255);
+				rgb.Blue = (int)(General.Clamp(Math.Abs(c), 0.0f, 1.0f) * 255);
 
                 changeType = ChangeStyle.RGB;
                 updateColorInfo(rgb);
                 this.Invalidate();
             } else if (COLOR_INFO[colorInfoMode].ToString() == COLOR_INFO_HEX) {
-                string hexColor = tbFloatVals.Text;
+                string hexColor = tbFloatVals.Text.Trim().Replace("-", "");
                 if (hexColor.Length != 6) return;
 
                 ColorHandler.RGB rgb = new ColorHandler.RGB();