diff --git a/masquerade.module b/masquerade.module
index 4367c05..4a6acf3 100644
--- a/masquerade.module
+++ b/masquerade.module
@@ -681,6 +681,7 @@ function masquerade_switch_user($uid) {
 
   watchdog('masquerade', 'User %user now masquerading as %masq_as.', array('%user' => $user->name, '%masq_as' => $new_user->name ? $new_user->name : variable_get('anonymous', t('Anonymous'))), WATCHDOG_INFO);
   drupal_set_message(t('You are now masquerading as !masq_as.', array('!masq_as' => theme('username', $new_user))));
+  $_SESSION['masquerading'] = $user->uid;
   $user->masquerading = $new_user->uid;
   $user = $new_user;
   return TRUE;
@@ -713,6 +714,9 @@ function masquerade_switch_back() {
   $uid = db_result(db_query("SELECT m.uid_from FROM {masquerade} m WHERE m.sid = '%s' AND m.uid_as = %d ", session_id(), $user->uid));
   // erase record
   db_query("DELETE FROM {masquerade} WHERE sid = '%s' AND uid_as = %d ", session_id(), $user->uid);
+  if ( isset($_SESSION) ) {
+    unset($_SESSION['masquerading']);
+  }
   $oldname = ($user->uid == 0 ? variable_get('anonymous', t('Anonymous')) : $user->name);
   $user = user_load(array('uid' => $uid));
   watchdog('masquerade', 'User %user no longer masquerading as %masq_as.', array('%user' => $user->name, '%masq_as' => $oldname), WATCHDOG_INFO);
