Index: wp-admin/includes/user.php
===================================================================
--- wp-admin/includes/user.php	(revision 11216)
+++ wp-admin/includes/user.php	(working copy)
@@ -792,13 +792,31 @@
 endif;
 
 add_action('admin_init', 'default_password_nag_handler');
-function default_password_nag_handler() {
+function default_password_nag_handler($errors = false) {
+	global $user_ID;
+	if ( ! get_usermeta($user_ID, 'default_password_nag') ) //Short circuit it.
+		return;
+
+	//get_user_setting = JS saved UI setting. else no-js-falback code.
 	if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) {		
-		global $user_ID;
 		delete_user_setting('default_password_nag');
 		update_usermeta($user_ID, 'default_password_nag', false);
 	}
 }
+
+add_action('user_profile_update_errors', 'default_password_nag_edit_user');
+function default_password_nag_edit_user($errors) {
+	global $user_ID;
+	if ( ! get_usermeta($user_ID, 'default_password_nag') ) //Short circuit it.
+		return;
+
+	$codes = $errors->get_error_codes();
+	if ( empty($codes) && !empty($_POST['pass1']) ) { //Remove the nag if the password has been changed.
+		delete_user_setting('default_password_nag');
+		update_usermeta($user_ID, 'default_password_nag', false);
+	}
+}
+
 add_action('admin_notices', 'default_password_nag');
 function default_password_nag() {
 	global $user_ID;
