diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 1acaa8cf356104049b6dd604434e1ff79a165262..507b1ac9d83ebaed2dd1f8bf39f2ac51634321c1 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -184,7 +184,6 @@ BOOL sbbs_t::newuser()
 				bprintf(text[InvalidBackspaceKeyFmt], key, key);
 				if(text[ContinueQ][0] && !yesno(text[ContinueQ]))
 					return FALSE;
-				newline();
 			}
 		}
 
diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index cb179eafdebb7cc1329013a4658ca9a69f3ad7cc..a1f171e0c45941e99810e41bc94e05c39a0ed5bc 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -941,10 +941,20 @@ void sbbs_t::maindflts(user_t* user)
 						user->misc|=NO_EXASCII;
 					else
 						user->misc&=~NO_EXASCII;
-					if(!noyes(text[SwapDeleteKeyQ]))
-						user->misc|=SWAP_DELETE;
-					else
-						user->misc&=~SWAP_DELETE;
+					user->misc &= ~SWAP_DELETE;
+					while(text[HitYourBackspaceKey][0] && !(user->misc&SWAP_DELETE) && online) {
+						bputs(text[HitYourBackspaceKey]);
+						uchar key = getkey(K_NONE);
+						bprintf(text[CharacterReceivedFmt], key, key);
+						if(key == '\b')
+							break;
+						if(key == DEL) {
+							if(text[SwapDeleteKeyQ][0] == 0 || yesno(text[SwapDeleteKeyQ]))
+								user->misc |= SWAP_DELETE;
+						}
+						else
+							bprintf(text[InvalidBackspaceKeyFmt], key, key);
+					}
 				}
 				if(sys_status&SS_ABORT)
 					break;