diff --git a/INSTALL b/INSTALL
index e9bd97f..78bc228 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,7 +5,6 @@ You need the devel packages of the following libraries:
 
  - gtk+ >= 2.14
  - glib >= 2.18
- - libglade-2.0
  - gconf-2.0
  - gnome-keyring
  - gtk-vnc widget >= 0.3.8 (http://sourceforge.net/projects/gtk-vnc)
@@ -14,6 +13,7 @@ You need the devel packages of the following libraries:
 
 To compile it, just do:
 
+./autogen.sh
 ./configure [--prefix=/usr]
 make
 make install (as root, or with sudo)
diff --git a/configure.ac b/configure.ac
index ef59695..10b4be8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,8 +35,7 @@ GNOME_DOC_INIT
 #*******************************************************************************
 
 GLIB_REQUIRED=2.17.0
-GTK_REQUIRED=2.13.1
-LIBGLADE_REQUIRED=2.6.0
+GTK_REQUIRED=2.16.0
 GCONF_REQUIRED=2.16.0
 GTHREAD_REQUIRED=2.0.0
 GTK_VNC_REQUIRED=0.3.8
@@ -65,7 +64,6 @@ PKG_CHECK_MODULES(VINAGRE, \
   glib-2.0 >= $GLIB_REQUIRED \
   gio-2.0 >= $GLIB_REQUIRED \
   gtk+-2.0 >= $GTK_REQUIRED \ 
-  libglade-2.0 >= $LIBGLADE_REQUIRED \
   gconf-2.0 >= $GCONF_REQUIRED \
   gthread-2.0 >= $GTHREAD_REQUIRED \
   gnome-keyring-1 \
diff --git a/data/Makefile.am b/data/Makefile.am
index 28f430a..ead6f53 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,7 +1,7 @@
 SUBDIRS = icons
 
-gladedir   = $(datadir)/vinagre
-glade_DATA = vinagre.glade
+gtkbuilderdir   = $(datadir)/vinagre
+gtkbuilder_DATA = vinagre.ui
 
 man_MANS = vinagre.1
 
@@ -40,7 +40,7 @@ CLEANFILES = \
 	$(schemas_DATA)
 
 EXTRA_DIST = \
-	$(glade_DATA) \
+	$(gtkbuilder_DATA) \
 	$(man_MANS) \
 	$(ui_DATA) \
 	$(desktop_in_files) \
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 27ab654..b2e36c9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -3,7 +3,7 @@
 data/GNOME_VinagreApplet.xml
 data/vinagre.desktop.in.in
 data/vinagre-file.desktop.in.in
-data/vinagre.glade
+data/vinagre.ui
 data/vinagre.schemas.in
 data/vinagre-mime.xml.in
 data/vinagre-ui.xml
diff --git a/src/vinagre-bookmarks-ui.c b/src/vinagre-bookmarks-ui.c
index ed1cd8c..e8f010b 100644
--- a/src/vinagre-bookmarks-ui.c
+++ b/src/vinagre-bookmarks-ui.c
@@ -18,7 +18,6 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <glade/glade.h>
 #include <string.h>
 #include <glib/gi18n.h>
 
@@ -39,17 +38,26 @@ show_dialog_folder (VinagreBookmarks      *book,
 		    VinagreBookmarksEntry *entry,
 		    gboolean               is_add)
 {
-  GladeXML    *xml;
+  GtkBuilder  *xml;
   GtkWidget   *dialog, *box, *tree, *name_entry, *save_button;
   const gchar *name;
 
-  xml = glade_xml_new (vinagre_utils_get_glade_filename (),
-		       "bookmarks_add_edit_folder_dialog",
-		       NULL);
-  dialog     = glade_xml_get_widget (xml, "bookmarks_add_edit_folder_dialog");
-  name_entry = glade_xml_get_widget (xml, "edit_bookmark_folder_name_entry");
-  box        = glade_xml_get_widget (xml, "folder_box1");
-  save_button= glade_xml_get_widget (xml, "save_button");
+  GError* error = NULL;
+  xml = gtk_builder_new ();
+  if (!gtk_builder_add_from_file (xml, 
+                                  vinagre_utils_get_gtkbuilder_filename (),
+                                  &error))
+    {
+      g_warning ("Couldn't load builder file: s", error->message);
+      g_error_free (error);
+    }
+
+  dialog     = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "bookmarks_add_edit_folder_dialog"));
+  name_entry = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "edit_bookmark_folder_name_entry"));
+  box        = GTK_WIDGET (gtk_builder_get_object (xml, "folder_box1"));
+  save_button= GTK_WIDGET (gtk_builder_get_object (xml, "save_button"));
 
   gtk_window_set_transient_for (GTK_WINDOW (dialog), window);
   gtk_entry_set_text (GTK_ENTRY (name_entry), vinagre_bookmarks_entry_get_name (entry));
@@ -121,7 +129,7 @@ show_dialog_conn (VinagreBookmarks      *book,
 {
   gchar             *str, *host, *error_str;
   gint               port;
-  GladeXML          *xml;
+  GtkBuilder        *xml;
   GtkWidget         *dialog, *host_entry, *name_entry;
   GtkWidget         *fs_check, *sc_check, *vo_check;
   GtkWidget         *box, *tree, *save_button;
@@ -129,17 +137,32 @@ show_dialog_conn (VinagreBookmarks      *book,
   const gchar       *name;
   VinagreConnectionProtocol protocol;
 
-  xml = glade_xml_new (vinagre_utils_get_glade_filename (),
-		       "bookmarks_add_edit_conn_dialog",
-		       NULL);
-  dialog     = glade_xml_get_widget (xml, "bookmarks_add_edit_conn_dialog");
-  name_entry = glade_xml_get_widget (xml, "edit_bookmark_name_entry");
-  host_entry = glade_xml_get_widget (xml, "edit_bookmark_host_entry");
-  fs_check   = glade_xml_get_widget (xml, "edit_fullscreen_check");
-  sc_check   = glade_xml_get_widget (xml, "edit_scaling_check");
-  vo_check   = glade_xml_get_widget (xml, "edit_viewonly_check");
-  box        = glade_xml_get_widget (xml, "folder_box");
-  save_button= glade_xml_get_widget (xml, "save_button");
+  GError* error = NULL;
+  xml = gtk_builder_new ();
+  if (!gtk_builder_add_from_file (xml, 
+                                  vinagre_utils_get_gtkbuilder_filename (),
+                                  &error))
+    {
+      g_warning ("Couldn't load builder file: s", error->message);
+      g_error_free (error);
+    }
+
+  dialog     = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "bookmarks_add_edit_conn_dialog"));
+  name_entry = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "edit_bookmark_name_entry"));
+  host_entry = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "edit_bookmark_host_entry"));
+  fs_check   = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "edit_fullscreen_check"));
+  sc_check   = GTK_WIDGET (gtk_builder_get_object 
+                            (xml, "edit_scaling_check"));
+  vo_check   = GTK_WIDGET (gtk_builder_get_object
+                            (xml, "edit_viewonly_check"));
+  box        = GTK_WIDGET (gtk_builder_get_object
+                            (xml, "folder_box"));
+  save_button= GTK_WIDGET (gtk_builder_get_object
+                            (xml, "save_button"));
 
   gtk_window_set_transient_for (GTK_WINDOW (dialog), window);
   conn = vinagre_bookmarks_entry_get_conn (entry);
diff --git a/src/vinagre-connect.c b/src/vinagre-connect.c
index 912a505..fbaa59b 100644
--- a/src/vinagre-connect.c
+++ b/src/vinagre-connect.c
@@ -25,7 +25,6 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <string.h>
 
 #ifdef VINAGRE_ENABLE_AVAHI
@@ -38,13 +37,13 @@
 #include "vinagre-prefs.h"
 
 typedef struct {
-  GladeXML  *xml;
-  GtkWidget *dialog;
-  GtkWidget *host_entry;
-  GtkWidget *find_button;
-  GtkWidget *fullscreen_check;
-  GtkWidget *scaling_check;
-  GtkWidget *viewonly_check;
+  GtkBuilder  *xml;
+  GtkWidget   *dialog;
+  GtkWidget   *host_entry;
+  GtkWidget   *find_button;
+  GtkWidget   *fullscreen_check;
+  GtkWidget   *scaling_check;
+  GtkWidget   *viewonly_check;
 } VinagreConnectDialog;
 
 enum {
@@ -226,15 +225,30 @@ VinagreConnection *vinagre_connect (VinagreWindow *window)
   gint                  result;
   VinagreConnectDialog  dialog;
 
-  dialog.xml = glade_xml_new (vinagre_utils_get_glade_filename (), NULL, NULL);
-  dialog.dialog = glade_xml_get_widget (dialog.xml, "connect_dialog");
+  GError* error = NULL;
+  GtkBuilder* dialog.xml = gtk_builder_new ();
+  if (!gtk_builder_add_from_file (dialog.xml, 
+                                  vinagre_utils_get_gtkbuilder_filename (),
+                                  &error))
+    {
+      g_warning ("Couldn't load builder file: s", error->message);
+      g_error_free (error);
+    }
+
+  dialog.dialog = GTK_WIDGET (gtk_builder_get_object (dialog.xml, 
+                                                      "connect_dialog"));
   gtk_window_set_transient_for (GTK_WINDOW (dialog.dialog), GTK_WINDOW (window));
 
-  dialog.host_entry  = glade_xml_get_widget (dialog.xml, "host_entry");
-  dialog.find_button = glade_xml_get_widget (dialog.xml, "find_button");
-  dialog.fullscreen_check = glade_xml_get_widget (dialog.xml, "fullscreen_check");
-  dialog.viewonly_check = glade_xml_get_widget (dialog.xml, "viewonly_check");
-  dialog.scaling_check = glade_xml_get_widget (dialog.xml, "scaling_check");
+  dialog.host_entry  = GTK_WIDGET (gtk_builder_get_object (dialog.xml, 
+                                                           "host_entry"));
+  dialog.find_button = GTK_WIDGET (gtk_builder_get_object (dialog.xml,
+                                                           "find_button"));
+  dialog.fullscreen_check = GTK_WIDGET (gtk_builder_get_object 
+                                         (dialog.xml, "fullscreen_check"));
+  dialog.viewonly_check = GTK_WIDGET (gtk_builder_get_object 
+                                       (dialog.xml, "viewonly_check"));
+  dialog.scaling_check = GTK_WIDGET (gtk_builder_get_object
+                                      (dialog.xml, "scaling_check"));
 
   setup_combo (dialog.host_entry);
 
diff --git a/src/vinagre-prefs.c b/src/vinagre-prefs.c
index a5263b2..2020e71 100644
--- a/src/vinagre-prefs.c
+++ b/src/vinagre-prefs.c
@@ -20,7 +20,6 @@
 
 #include <gconf/gconf-client.h>
 #include <glib/gi18n.h>
-#include <glade/glade.h>
 #include "vinagre-prefs.h"
 #include "vinagre-utils.h"
 
@@ -389,10 +388,10 @@ vinagre_prefs_class_init (VinagrePrefsClass *klass)
 /* Preferences dialog */
 
 typedef struct {
-  GladeXML  *xml;
-  GtkWidget *dialog;
-  GtkWidget *show_tabs;
-  GtkWidget *show_accels;
+  GtkBuilder  *xml;
+  GtkWidget   *dialog;
+  GtkWidget   *show_tabs;
+  GtkWidget   *show_accels;
 } VinagrePrefsDialog;
 
 static void
@@ -441,12 +440,24 @@ vinagre_prefs_dialog_show (VinagreWindow *window)
 
   dialog = g_new (VinagrePrefsDialog, 1);
 
-  dialog->xml = glade_xml_new (vinagre_utils_get_glade_filename (), NULL, NULL);
-  dialog->dialog = glade_xml_get_widget (dialog->xml, "preferences_dialog");
+  GError* error = NULL;
+  dialog->xml = gtk_builder_new ();
+  if (!gtk_builder_add_from_file (dialog->xml, 
+                                  vinagre_utils_get_gtkbuilder_filename (), 
+                                  &error))
+    {
+      g_warning ("Couldn't load builder file: s", error->message);
+      g_error_free (error);
+    }
+
+  dialog->dialog = GTK_WIDGET (gtk_builder_get_object (dialog->xml,
+                                                       "preferences_dialog"));
   gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog), GTK_WINDOW (window));
 
-  dialog->show_tabs = glade_xml_get_widget (dialog->xml, "always_show_tabs_check");
-  dialog->show_accels = glade_xml_get_widget (dialog->xml, "show_accels_check");
+  dialog->show_tabs = GTK_WIDGET (gtk_builder_get_object 
+                                   (dialog->xml, "always_show_tabs_check"));
+  dialog->show_accels = GTK_WIDGET (gtk_builder_get_object 
+                                     (dialog->xml, "show_accels_check"));
 
   vinagre_prefs_dialog_setup (dialog);
 
diff --git a/src/vinagre-tab.c b/src/vinagre-tab.c
index 36b1fc8..2921239 100644
--- a/src/vinagre-tab.c
+++ b/src/vinagre-tab.c
@@ -24,7 +24,6 @@
 #endif
 
 #include <glib/gi18n.h>
-#include <glade/glade.h>
 #include <gnome-keyring.h>
 
 #include "vinagre-tab.h"
diff --git a/src/vinagre-utils.c b/src/vinagre-utils.c
index c779816..af1da9e 100644
--- a/src/vinagre-utils.c
+++ b/src/vinagre-utils.c
@@ -22,7 +22,7 @@
 #include <glib/gi18n.h>
 #include "vinagre-utils.h"
 
-#define VINAGRE_GLADE_FILE  "vinagre.glade"
+#define VINAGRE_GTKBUILDER_FILE  "vinagre.ui"
 #define VINAGRE_UI_XML_FILE "vinagre-ui.xml"
 
 #ifdef HAVE_CONFIG_H
@@ -119,12 +119,12 @@ vinagre_utils_toggle_widget_visible (GtkWidget *widget)
 }
 
 const gchar *
-vinagre_utils_get_glade_filename (void)
+vinagre_utils_get_gtkbuilder_filename (void)
 {
-  if (g_file_test (VINAGRE_GLADE_FILE, G_FILE_TEST_EXISTS))
-    return VINAGRE_GLADE_FILE;
+  if (g_file_test (VINAGRE_GTKBUILDER_FILE, G_FILE_TEST_EXISTS))
+    return VINAGRE_GTKBUILDER_FILE;
   else
-    return VINAGRE_DATADIR "/" VINAGRE_GLADE_FILE;
+    return VINAGRE_DATADIR "/" VINAGRE_GTKBUILDER_FILE;
 }
 
 const gchar *
diff --git a/src/vinagre-utils.h b/src/vinagre-utils.h
index a164fd1..9e69295 100644
--- a/src/vinagre-utils.h
+++ b/src/vinagre-utils.h
@@ -54,7 +54,7 @@ void		vinagre_utils_show_many_errors		(const gchar *title,
 
 void		vinagre_utils_toggle_widget_visible	(GtkWidget *widget);
 
-const gchar	*vinagre_utils_get_glade_filename	(void);
+const gchar	*vinagre_utils_get_gtkbuilder_filename	(void);
 const gchar	*vinagre_utils_get_ui_xml_filename	(void);
 
 gchar		*vinagre_utils_escape_underscores	(const gchar *text,
diff --git a/src/vinagre-vnc-tab.c b/src/vinagre-vnc-tab.c
index 61300c6..df16b7d 100644
--- a/src/vinagre-vnc-tab.c
+++ b/src/vinagre-vnc-tab.c
@@ -20,7 +20,6 @@
  */
 
 #include <glib/gi18n.h>
-#include <glade/glade.h>
 #include <vncdisplay.h>
 #include <gdk/gdkkeysyms.h>
 
@@ -406,8 +405,8 @@ ask_credential (VinagreVncTab *vnc_tab,
 		gchar         **username,
 		gchar         **password)
 {
-  GladeXML        *xml;
-  const char      *glade_file;
+  GtkBuilder      *xml;
+  const char      *gtkbuilder_file;
   GtkWidget       *password_dialog, *host_label, *save_credential_check;
   GtkWidget       *password_label, *username_label, *image;
   gchar           *name, *label;
@@ -416,26 +415,34 @@ ask_credential (VinagreVncTab *vnc_tab,
   VinagreTab      *tab = VINAGRE_TAB (vnc_tab);
   VinagreConnection *conn = vinagre_tab_get_conn (tab);
 
-  glade_file = vinagre_utils_get_glade_filename ();
-  xml = glade_xml_new (glade_file, NULL, NULL);
+  gtkbuilder_file = vinagre_utils_get_gtkbuilder_filename ();
+  GError* error = NULL;
+  xml = gtk_builder_new ();
+  if (!gtk_builder_add_from_file (xml, gtkbuilder_file, &error))
+    {
+      g_warning ("Couldn't load builder file: s", error->message);
+      g_error_free (error);
+    }
 
-  password_dialog = glade_xml_get_widget (xml, "auth_required_dialog");
+  password_dialog = GTK_WIDGET (gtk_builder_get_object (xml,
+                                "auth_required_dialog"));
   gtk_window_set_transient_for (GTK_WINDOW(password_dialog),
 				GTK_WINDOW(vinagre_tab_get_window (tab)));
 
-  host_label = glade_xml_get_widget (xml, "host_label");
+  host_label = GTK_WIDGET (gtk_builder_get_object (xml, "host_label"));
   name = vinagre_connection_get_best_name (conn);
   label = g_strdup_printf ("<i>%s</i>", name);
   gtk_label_set_markup (GTK_LABEL (host_label), label);
   g_free (name);
   g_free (label);
 
-  control.uname  = glade_xml_get_widget (xml, "username_entry");
-  control.pw     = glade_xml_get_widget (xml, "password_entry");
-  control.button = glade_xml_get_widget (xml, "ok_button");
-  password_label = glade_xml_get_widget (xml, "password_label");
-  username_label = glade_xml_get_widget (xml, "username_label");
-  save_credential_check = glade_xml_get_widget (xml, "save_credential_check");
+  control.uname  = GTK_WIDGET (gtk_builder_get_object (xml, "username_entry"));
+  control.pw     = GTK_WIDGET (gtk_builder_get_object (xml, "password_entry"));
+  control.button = GTK_WIDGET (gtk_builder_get_object (xml, "ok_button"));
+  password_label = GTK_WIDGET (gtk_builder_get_object (xml, "password_label"));
+  username_label = GTK_WIDGET (gtk_builder_get_object (xml, "username_label"));
+  save_credential_check = GTK_WIDGET (gtk_builder_get_object 
+                                        (xml, "save_credential_check"));
 
   image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_BUTTON);
   gtk_button_set_image (GTK_BUTTON (control.button), image);
