diff --git a/src/config.py b/src/config.py
index ba83b886d0fe4bf47a8dc874574cf97a3c6f4f0b..2841ed38bb9d830ccfda2a549c5a4afc48c512e5 100644
--- a/src/config.py
+++ b/src/config.py
@@ -853,12 +853,10 @@ class PreferencesWindow:
             gajim.config.set('trayicon', 'on_event')
             gajim.interface.systray_enabled = True
             gajim.interface.systray.show_icon()
-            gajim.interface.systray.set_img()
         else:
             gajim.config.set('trayicon', 'always')
             gajim.interface.systray_enabled = True
             gajim.interface.systray.show_icon()
-            gajim.interface.systray.set_img()
 
     def on_advanced_notifications_button_clicked(self, widget):
         dialogs.AdvancedNotificationsWindow()
diff --git a/src/statusicon.py b/src/statusicon.py
index 6950fd41c67435303cf487b92b9e191ea6efdb3a..10d974ff0d09bf2904852dab9d1725253c7d7e73 100644
--- a/src/statusicon.py
+++ b/src/statusicon.py
@@ -97,7 +97,6 @@ class StatusIcon:
                     self.on_status_icon_size_changed)
 
         self.set_img()
-        self.status_icon.set_visible(True)
         self.subscribe_events()
 
     def on_status_icon_right_clicked(self, widget, event_button, event_time):
@@ -131,9 +130,14 @@ class StatusIcon:
         """
         if not gajim.interface.systray_enabled:
             return
+        if gajim.config.get('trayicon') == 'always':
+            self.status_icon.set_visible(True)
         if gajim.events.get_nb_systray_events():
+            self.status_icon.set_visible(True)
             self.status_icon.set_blinking(True)
         else:
+            if gajim.config.get('trayicon') == 'on_event':
+                self.status_icon.set_visible(False)
             self.status_icon.set_blinking(False)
 
         image = gajim.interface.jabber_state_images[self.statusicon_size][