diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index e66789d..54a0e8f 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -480,6 +485,9 @@ const LoginDialog = new Lang.Class({
         // focus later
         Main.layoutManager.connect('startup-complete',
                                    Lang.bind(this, this._updateDisableUserList));
+        Main.screenShield.connect('active-changed',
+                                   Lang.bind(this, this._screenShieldActive));
+
     },
 
     _ensureUserListLoaded: function() {
@@ -509,6 +517,10 @@ const LoginDialog = new Lang.Class({
         }
     },
 
+    _screenShieldActive: function() {
+        this._authPrompt.reset();
+    },
+
     _updateCancelButton: function() {
         let cancelVisible;
 
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 0209846..a6b73b2 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -624,6 +624,9 @@ const ScreenShield = new Lang.Class({
         if (this._isLocked) {
             if (this._ensureUnlockDialog(onPrimary, true /* allowCancel */))
                 this._hideLockScreen(true /* animate */, velocity);
+                if (this._isGreeter)
+                    this.emit('active-changed');
+
         } else {
             this.deactivate(true /* animate */);
         }
