diff --git a/libempathy-gtk/empathy-account-widget-aim.ui b/libempathy-gtk/empathy-account-widget-aim.ui
index 63d8946..e564e9d 100644
--- a/libempathy-gtk/empathy-account-widget-aim.ui
+++ b/libempathy-gtk/empathy-account-widget-aim.ui
@@ -16,7 +16,7 @@
       <object class="GtkTable" id="table_common_settings">
         <property name="visible">True</property>
         <property name="n_rows">3</property>
-        <property name="n_columns">3</property>
+        <property name="n_columns">2</property>
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
@@ -48,28 +48,6 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="button_forget">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <child>
-              <object class="GtkImage" id="image834">
-                <property name="visible">True</property>
-                <property name="stock">gtk-clear</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options"></property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkEntry" id="entry_screenname">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
@@ -77,7 +55,7 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">3</property>
+            <property name="right_attach">2</property>
             <property name="y_options"></property>
           </packing>
         </child>
@@ -97,12 +75,6 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -120,6 +92,9 @@
             <property name="bottom_attach">2</property>
           </packing>
         </child>
+        <child>
+          <placeholder/>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget-groupwise.ui b/libempathy-gtk/empathy-account-widget-groupwise.ui
index da1e171..6485f59 100644
--- a/libempathy-gtk/empathy-account-widget-groupwise.ui
+++ b/libempathy-gtk/empathy-account-widget-groupwise.ui
@@ -19,49 +19,6 @@
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <property name="spacing">2</property>
-            <child>
-              <object class="GtkEntry" id="entry_password">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="visibility">False</property>
-                <property name="invisible_char">&#x25CF;</property>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_forget">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <child>
-                  <object class="GtkImage" id="image1">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-clear</property>
-                    <property name="icon-size">1</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_password">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -101,9 +58,6 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -121,6 +75,23 @@
             <property name="bottom_attach">2</property>
           </packing>
         </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <object class="GtkEntry" id="entry_password">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="visibility">False</property>
+            <property name="invisible_char">&#x2022;</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="bottom_attach">3</property>
+          </packing>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget-icq.ui b/libempathy-gtk/empathy-account-widget-icq.ui
index f889fd0..1b989b7 100644
--- a/libempathy-gtk/empathy-account-widget-icq.ui
+++ b/libempathy-gtk/empathy-account-widget-icq.ui
@@ -16,7 +16,7 @@
       <object class="GtkTable" id="table_common_settings">
         <property name="visible">True</property>
         <property name="n_rows">3</property>
-        <property name="n_columns">3</property>
+        <property name="n_columns">2</property>
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
@@ -48,28 +48,6 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="button_forget">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <child>
-              <object class="GtkImage" id="image834">
-                <property name="visible">True</property>
-                <property name="stock">gtk-clear</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options"></property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkEntry" id="entry_uin">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
@@ -77,7 +55,7 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">3</property>
+            <property name="right_attach">2</property>
             <property name="y_options"></property>
           </packing>
         </child>
@@ -97,12 +75,6 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -120,6 +92,9 @@
             <property name="bottom_attach">2</property>
           </packing>
         </child>
+        <child>
+          <placeholder/>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget-jabber.ui b/libempathy-gtk/empathy-account-widget-jabber.ui
index 76f11de..c8c8053 100644
--- a/libempathy-gtk/empathy-account-widget-jabber.ui
+++ b/libempathy-gtk/empathy-account-widget-jabber.ui
@@ -22,7 +22,7 @@
       <object class="GtkTable" id="table_common_settings">
         <property name="visible">True</property>
         <property name="n_rows">3</property>
-        <property name="n_columns">3</property>
+        <property name="n_columns">2</property>
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
@@ -48,7 +48,7 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">3</property>
+            <property name="right_attach">2</property>
             <property name="y_options"></property>
           </packing>
         </child>
@@ -66,28 +66,6 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="button_forget">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <child>
-              <object class="GtkImage" id="image834">
-                <property name="visible">True</property>
-                <property name="stock">gtk-clear</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options">GTK_FILL</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_password">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -163,9 +141,6 @@ Use &lt;a href="http://www.facebook.com/username/"&gt;this page&lt;/a&gt; to cho
         <child>
           <placeholder/>
         </child>
-        <child>
-          <placeholder/>
-        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget-msn.ui b/libempathy-gtk/empathy-account-widget-msn.ui
index 807bfbc..e6f6dc6 100644
--- a/libempathy-gtk/empathy-account-widget-msn.ui
+++ b/libempathy-gtk/empathy-account-widget-msn.ui
@@ -19,49 +19,6 @@
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <property name="spacing">2</property>
-            <child>
-              <object class="GtkEntry" id="entry_password">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="visibility">False</property>
-                <property name="invisible_char">&#x25CF;</property>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_forget">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <child>
-                  <object class="GtkImage" id="image1">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-clear</property>
-                    <property name="icon-size">1</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_password">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -101,9 +58,6 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -121,6 +75,23 @@
             <property name="bottom_attach">2</property>
           </packing>
         </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <object class="GtkEntry" id="entry_password">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="visibility">False</property>
+            <property name="invisible_char">&#x2022;</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="bottom_attach">3</property>
+          </packing>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget-private.h b/libempathy-gtk/empathy-account-widget-private.h
index 567898b..db8dc7d 100644
--- a/libempathy-gtk/empathy-account-widget-private.h
+++ b/libempathy-gtk/empathy-account-widget-private.h
@@ -34,7 +34,6 @@ struct _EmpathyAccountWidgetUIDetails {
   GtkBuilder *gui;
 
   char *default_focus;
-  gboolean add_forget;
 };
 
 
diff --git a/libempathy-gtk/empathy-account-widget-sip.c b/libempathy-gtk/empathy-account-widget-sip.c
index cc32cde..5058f6a 100644
--- a/libempathy-gtk/empathy-account-widget-sip.c
+++ b/libempathy-gtk/empathy-account-widget-sip.c
@@ -165,7 +165,6 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self,
           account_widget_sip_discover_stun_toggled_cb,
           NULL);
 
-      self->ui_details->add_forget = TRUE;
       self->ui_details->default_focus = g_strdup ("entry_userid");
 
       /* Create the 'transport' combo box. The first column has to contain the
diff --git a/libempathy-gtk/empathy-account-widget-sip.ui b/libempathy-gtk/empathy-account-widget-sip.ui
index 13cc2f9..3145ad8 100644
--- a/libempathy-gtk/empathy-account-widget-sip.ui
+++ b/libempathy-gtk/empathy-account-widget-sip.ui
@@ -58,46 +58,6 @@
           </packing>
         </child>
         <child>
-          <object class="GtkHBox" id="hbox1">
-            <property name="visible">True</property>
-            <child>
-              <object class="GtkEntry" id="entry_password">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_forget">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <child>
-                  <object class="GtkImage" id="image6">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-clear</property>
-                    <property name="icon-size">1</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
diff --git a/libempathy-gtk/empathy-account-widget-yahoo.ui b/libempathy-gtk/empathy-account-widget-yahoo.ui
index c595a34..c985458 100644
--- a/libempathy-gtk/empathy-account-widget-yahoo.ui
+++ b/libempathy-gtk/empathy-account-widget-yahoo.ui
@@ -17,7 +17,7 @@
       <object class="GtkTable" id="table_common_settings">
         <property name="visible">True</property>
         <property name="n_rows">3</property>
-        <property name="n_columns">3</property>
+        <property name="n_columns">2</property>
         <property name="column_spacing">12</property>
         <property name="row_spacing">6</property>
         <child>
@@ -36,28 +36,6 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="button_forget">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <child>
-              <object class="GtkImage" id="image834">
-                <property name="visible">True</property>
-                <property name="stock">gtk-clear</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="left_attach">2</property>
-            <property name="right_attach">3</property>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options">GTK_FILL</property>
-            <property name="y_options"></property>
-          </packing>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_id">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -78,7 +56,7 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">3</property>
+            <property name="right_attach">2</property>
             <property name="y_options"></property>
           </packing>
         </child>
@@ -98,12 +76,6 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
           <object class="GtkLabel" id="label_username_example">
             <property name="visible">True</property>
             <property name="xalign">0</property>
@@ -121,6 +93,9 @@
             <property name="bottom_attach">2</property>
           </packing>
         </child>
+        <child>
+          <placeholder/>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c
index 733fa38..23f2760 100644
--- a/libempathy-gtk/empathy-account-widget.c
+++ b/libempathy-gtk/empathy-account-widget.c
@@ -60,7 +60,6 @@ typedef struct {
   GtkWidget *apply_button;
   GtkWidget *cancel_button;
   GtkWidget *entry_password;
-  GtkWidget *button_forget;
   GtkWidget *spinbutton_port;
   GtkWidget *enabled_checkbox;
   GtkWidget *radiobutton_reuse;
@@ -260,36 +259,6 @@ account_widget_checkbutton_toggled_cb (GtkWidget *widget,
 }
 
 static void
-account_widget_forget_clicked_cb (GtkWidget *button,
-    EmpathyAccountWidget *self)
-{
-  EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-  const gchar *param_name;
-
-  param_name = g_object_get_data (G_OBJECT (priv->entry_password),
-      "param_name");
-
-  DEBUG ("Unset %s", param_name);
-  empathy_account_settings_unset (priv->settings, param_name);
-  gtk_entry_set_text (GTK_ENTRY (priv->entry_password), "");
-
-  empathy_account_widget_changed (self);
-}
-
-static void
-account_widget_password_changed_cb (GtkWidget *entry,
-    EmpathyAccountWidget *self)
-{
-  EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
-  const gchar *str;
-
-  str = gtk_entry_get_text (GTK_ENTRY (entry));
-  gtk_widget_set_sensitive (priv->button_forget, !EMP_STR_EMPTY (str));
-
-  priv->contains_pending_changes = TRUE;
-}
-
-static void
 account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl,
     EmpathyAccountWidget *self)
 {
@@ -355,6 +324,36 @@ account_widget_combobox_changed_cb (GtkWidget *widget,
   empathy_account_widget_changed (self);
 }
 
+static void
+clear_icon_released_cb (GtkEntry *entry,
+    GtkEntryIconPosition icon_pos,
+    GdkEvent *event,
+    EmpathyAccountWidget *self)
+{
+  EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
+  const gchar *param_name;
+
+  param_name = g_object_get_data (G_OBJECT (entry), "param_name");
+
+  DEBUG ("Unset %s", param_name);
+  empathy_account_settings_unset (priv->settings, param_name);
+  gtk_entry_set_text (entry, "");
+
+  empathy_account_widget_changed (self);
+}
+
+static void
+password_entry_changed_cb (GtkEditable *entry,
+    EmpathyAccountWidget *self)
+{
+  const gchar *str;
+
+  str = gtk_entry_get_text (GTK_ENTRY (entry));
+
+  gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
+      GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str));
+}
+
 void
 empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
     GtkWidget *widget,
@@ -419,6 +418,18 @@ empathy_account_widget_setup_widget (EmpathyAccountWidget *self,
       if (strstr (param_name, "password"))
         {
           gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE);
+
+          /* Add 'clear' icon */
+          gtk_entry_set_icon_from_stock (GTK_ENTRY (widget),
+              GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR);
+
+          gtk_entry_set_icon_sensitive (GTK_ENTRY (widget),
+              GTK_ENTRY_ICON_SECONDARY, !EMP_STR_EMPTY (str));
+
+          g_signal_connect (widget, "icon-release",
+              G_CALLBACK (clear_icon_released_cb), self);
+          g_signal_connect (widget, "changed",
+              G_CALLBACK (password_entry_changed_cb), self);
         }
 
       g_signal_connect (widget, "changed",
@@ -936,7 +947,6 @@ account_widget_build_msn (EmpathyAccountWidget *self,
           NULL);
 
       self->ui_details->default_focus = g_strdup ("entry_id");
-      self->ui_details->add_forget = TRUE;
     }
 }
 
@@ -1135,7 +1145,6 @@ account_widget_build_jabber (EmpathyAccountWidget *self,
         }
 
       self->ui_details->default_focus = g_strdup ("entry_id");
-      self->ui_details->add_forget = TRUE;
       priv->spinbutton_port = spinbutton_port;
 
       g_signal_connect (checkbutton_ssl, "toggled",
@@ -1193,7 +1202,6 @@ account_widget_build_icq (EmpathyAccountWidget *self,
           NULL);
 
       self->ui_details->default_focus = g_strdup ("entry_uin");
-      self->ui_details->add_forget = TRUE;
     }
 }
 
@@ -1233,7 +1241,6 @@ account_widget_build_aim (EmpathyAccountWidget *self,
           NULL);
 
       self->ui_details->default_focus = g_strdup ("entry_screenname");
-      self->ui_details->add_forget = TRUE;
     }
 }
 
@@ -1275,7 +1282,6 @@ account_widget_build_yahoo (EmpathyAccountWidget *self,
           NULL);
 
       self->ui_details->default_focus = g_strdup ("entry_id");
-      self->ui_details->add_forget = TRUE;
     }
 }
 
@@ -1313,7 +1319,6 @@ account_widget_build_groupwise (EmpathyAccountWidget *self,
           NULL);
 
       self->ui_details->default_focus = g_strdup ("entry_id");
-      self->ui_details->add_forget = TRUE;
     }
 }
 
@@ -1695,29 +1700,6 @@ do_constructed (GObject *obj)
           NULL);
     }
 
-  /* handle forget button */
-  if (self->ui_details->add_forget)
-    {
-      const gchar *password = NULL;
-
-      priv->button_forget = GTK_WIDGET (gtk_builder_get_object
-          (self->ui_details->gui, "button_forget"));
-      priv->entry_password = GTK_WIDGET (gtk_builder_get_object
-          (self->ui_details->gui, "entry_password"));
-
-      password = empathy_account_settings_get_string (priv->settings,
-          "password");
-      gtk_widget_set_sensitive (priv->button_forget,
-          !EMP_STR_EMPTY (password));
-
-      g_signal_connect (priv->button_forget, "clicked",
-          G_CALLBACK (account_widget_forget_clicked_cb),
-          self);
-      g_signal_connect (priv->entry_password, "changed",
-          G_CALLBACK (account_widget_password_changed_cb),
-          self);
-    }
-
   /* dup and init the account-manager */
   priv->account_manager = tp_account_manager_dup ();
 
