diff --git a/data/.gitignore b/data/.gitignore
index 423507e..2e59bba 100644
--- a/data/.gitignore
+++ b/data/.gitignore
@@ -4,3 +4,4 @@ empathy.schemas
 org.freedesktop.Telepathy.Client.Empathy.service
 empathy-accounts.desktop
 empathy-accounts.desktop.in
+icons/local-copy/*
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
index c083624..63ca94d 100644
--- a/data/icons/Makefile.am
+++ b/data/icons/Makefile.am
@@ -249,3 +249,30 @@ uninstall-icons:
 install-data-local: install-icons update-icon-cache
 
 uninstall-local: uninstall-icons update-icon-cache
+
+# Local copy of the "installed" icon. This is used to be able to run empathy
+# from source (see bgo #616159)
+local_icons_dir = $(top_builddir)/data/icons/local-copy
+
+install-icons-src: $(public_icons) $(private_icons)
+	for icon in $(public_icons); do \
+		THEME=`echo $$icon | cut -d_ -f1`; \
+		CONTEXT=`echo $$icon | cut -d_ -f2`; \
+		SIZE=`echo $$icon | cut -d_ -f3`; \
+		ICONFILE=`echo $$icon | cut -d_ -f4`; \
+		mkdir -p $(local_icons_dir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+		$(INSTALL_DATA) $(srcdir)/$$icon $(local_icons_dir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+	done; \
+	for icon in $(private_icons); do \
+		THEME=`echo $$icon | cut -d_ -f1`; \
+		CONTEXT=`echo $$icon | cut -d_ -f2`; \
+		SIZE=`echo $$icon | cut -d_ -f3`; \
+		ICONFILE=`echo $$icon | cut -d_ -f4`; \
+		mkdir -p $(local_icons_dir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+		$(INSTALL_DATA) $(srcdir)/$$icon $(local_icons_dir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+	done
+
+all: install-icons-src
+
+clean-local:
+	-rm -rf $(local_icons_dir)
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 24f2216..6ee3924 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -54,6 +54,7 @@ void
 empathy_gtk_init (void)
 {
 	static gboolean initialized = FALSE;
+	gchar *path;
 
 	if (initialized)
 		return;
@@ -62,6 +63,14 @@ empathy_gtk_init (void)
 	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
 					   PKGDATADIR G_DIR_SEPARATOR_S "icons");
 
+	/* Add icons from source dir if available */
+	path = g_build_filename (g_getenv ("EMPATHY_SRCDIR"), "data",
+			"icons", "local-copy", "icons", NULL);
+	if (g_file_test (path, G_FILE_TEST_EXISTS)) {
+		gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), path);
+	}
+
+	g_free (path);
 	initialized = TRUE;
 }
 
