"#005577",   /* during input */
        "#CC3333",   /* failed/cleared the input */
 };
+static const Bool failonclear = True;
 
 enum {
        INIT,
        INPUT,
-       EMPTY,
+       FAILED,
        NUMCOLS
 };
 
 static Lock **locks;
 static int nscreens;
 static Bool running = True;
+static Bool failure = False;
 static Bool rr;
 static int rrevbase;
 static int rrerrbase;
 #else
                                running = !!strcmp(crypt(passwd, pws), pws);
 #endif
-                               if (running)
+                               if (running) {
                                        XBell(dpy, 100);
+                                       failure = True;
+                               }
                                len = 0;
                                break;
                        case XK_Escape:
                                }
                        } else if (llen != 0 && len == 0) {
                                for (screen = 0; screen < nscreens; screen++) {
-                                       XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[EMPTY]);
+                                       XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[failure || failonclear ? FAILED : INIT]);
                                        XClearWindow(dpy, locks[screen]->win);
                                }
                        }