diff --git a/core/js/js.js b/core/js/js.js
index e1fbd04a8da4ef3f0e13bc351f2aae91f42f8b8e..1bb546f708180fc4cc6cd2bea2276d773b2aee0e 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -591,10 +591,20 @@ $(document).ready(function(){
 		}
 	});
 
-	// 'show password' checkbox
-	$('#password').showPassword();
-	$('#adminpass').showPassword();	
-	$('#pass2').showPassword();
+	var setShowPassword = function(input, label) {
+		input.showPassword().keyup(function(){
+			if (input.val().length == 0) {
+				label.hide();
+			}
+			else {
+				label.css("display", "inline").show();
+			}
+		});
+		label.hide();
+	};
+	setShowPassword($('#password'), $('label[for=show]'));
+	setShowPassword($('#adminpass'), $('label[for=show]'));
+	setShowPassword($('#pass2'), $('label[for=personal-show]'));
 
 	//use infield labels
 	$("label.infield").inFieldLabels({
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index f3fd3f1010daf84b857afa3a44772b3c2621a83e..03073069ab77688cd3888cbc45d56785b529317d 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -38,7 +38,7 @@ if($_['passwordChangeSupported']) {
 		<div id="passwordchanged"><?php echo $l->t('Your password was changed');?></div>
 		<div id="passworderror"><?php echo $l->t('Unable to change your password');?></div>
 		<input type="password" id="pass1" name="oldpassword" placeholder="<?php echo $l->t('Current password');?>" />
-		<input type="password" id="pass2" name="password"
+		<input type="password" id="pass2" name="new-password"
 			placeholder="<?php echo $l->t('New password');?>" data-typetoggle="#personal-show" />
 		<input type="checkbox" id="personal-show" name="show" /><label for="personal-show"></label>
 		<input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" />