diff --git a/plugins/gtkgui/config.py b/plugins/gtkgui/config.py
index 49c2274eacac4b80075b020ca1dfd3226ec883ec..aa905dca4521d4df853489ea82239dc618ca9b34 100644
--- a/plugins/gtkgui/config.py
+++ b/plugins/gtkgui/config.py
@@ -76,7 +76,6 @@ class Preferences_window:
 		active = widget.get_active()
 		icon_string = model[active][0]
 		self.plugin.config['iconset'] = icon_string
-		self.plugin.roster.mkpixbufs()
 		self.plugin.roster.reload_pixbufs()
 		
 	def on_account_text_colorbutton_color_set(self, widget):
diff --git a/plugins/gtkgui/roster_window.py b/plugins/gtkgui/roster_window.py
index 720e97c77b7e23f00b432223574a633bae3c1ecf..513fff48c9ecfcd979e9fef8956b01e1678a10fb 100644
--- a/plugins/gtkgui/roster_window.py
+++ b/plugins/gtkgui/roster_window.py
@@ -1106,6 +1106,7 @@ class Roster_window:
 					break
 
 	def reload_pixbufs(self):
+		self.mkpixbufs()
 		# Update the roster
 		self.draw_roster()
 		# Update the status combobox
@@ -1126,6 +1127,16 @@ class Roster_window:
 			for jid in self.plugin.windows[account]['gc']:
 				if jid != 'tabbed':
 					self.plugin.windows[account]['gc'][jid].udpate_pixbufs()
+		# Update windows icons
+		image = self.pixbufs['online']
+		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
+			pixbuf = image.get_animation().get_static_image()
+		elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
+			pixbuf = image.get_pixbuf()
+		for win in gtk.window_list_toplevels():
+			win.set_icon(pixbuf)
+		# Update roster_window icon with the status image
+		self.update_status_comboxbox()
 
 	def on_show_offline_contacts_menuitem_activate(self, widget):
 		"""when show offline option is changed: