diff --git a/gajim/chat_control_base.py b/gajim/chat_control_base.py
index 3ee8b519d48dfa5466ad0b818e029f9a5bbb9bbb..071e025d44c8234cebfc59c763300ca12256f205 100644
--- a/gajim/chat_control_base.py
+++ b/gajim/chat_control_base.py
@@ -176,11 +176,9 @@ def __init__(self, parent_win, widget_name, jid, acct,
         self._scrolled_view.add(self.conversation_view)
         self._scrolled_view.set_focus_vadjustment(Gtk.Adjustment())
 
-        overlay = Gtk.Overlay()
-        overlay.add(self._scrolled_view)
-        overlay.add_overlay(self.xml.jump_to_end_button)
-        self.xml.textview_box.add(overlay)
-        self.xml.textview_box.reorder_child(overlay, 2)
+        self.xml.conv_view_overlay.add(self._scrolled_view)
+        self.xml.conv_view_overlay.add_overlay(self.xml.jump_to_end_button)
+
         self._scrolled_view.connect('autoscroll-changed',
                                     self._on_autoscroll_changed)
         self._scrolled_view.connect('request-history',
diff --git a/gajim/common/modules/contacts.py b/gajim/common/modules/contacts.py
index 334dd6f4e0007f680dc300449030d3123c3b4a60..3f08c9ac3b34ad8073921189dff0cb3b4b1ed3bc 100644
--- a/gajim/common/modules/contacts.py
+++ b/gajim/common/modules/contacts.py
@@ -391,6 +391,8 @@ def update_avatar(self, *args):
     @property
     def is_joined(self):
         muc_data = self._module('MUC').get_muc_data(self._jid)
+        if muc_data is None:
+            return False
         return muc_data.state.is_joined
 
     def set_not_joined(self):
diff --git a/gajim/data/gui/chat_control.ui b/gajim/data/gui/chat_control.ui
index a3039e0d92e9e3ac453367595d9efda6a12dbf2c..7fbba4a93a3a4ae8ad26ba425732c61d417dbc66 100644
--- a/gajim/data/gui/chat_control.ui
+++ b/gajim/data/gui/chat_control.ui
@@ -629,7 +629,18 @@
                   </packing>
                 </child>
                 <child>
-                  <placeholder/>
+                  <object class="GtkOverlay" id="conv_view_overlay">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
                 </child>
                 <child>
                   <object class="GtkSeparator">
diff --git a/gajim/data/gui/groupchat_control.ui b/gajim/data/gui/groupchat_control.ui
index 96da1706c5091ce252830b83d7bd5a0680ac6f73..479993d310d52dd8a2a274a68bf72585aa4cbe54 100644
--- a/gajim/data/gui/groupchat_control.ui
+++ b/gajim/data/gui/groupchat_control.ui
@@ -341,7 +341,18 @@
                       </packing>
                     </child>
                     <child>
-                      <placeholder/>
+                      <object class="GtkOverlay" id="conv_view_overlay">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
                     <child>
                       <object class="GtkSeparator">
@@ -597,7 +608,6 @@
                     <property name="visible">True</property>
                     <property name="can-focus">False</property>
                     <property name="transition-type">none</property>
-                    <property name="reveal-child">True</property>
                     <child>
                       <placeholder/>
                     </child>
diff --git a/gajim/groupchat_control.py b/gajim/groupchat_control.py
index 91a557f2c21723ab78981c932cd9431b60adc303..2d531d18fba3c0725e22f31365fff999171325c6 100644
--- a/gajim/groupchat_control.py
+++ b/gajim/groupchat_control.py
@@ -200,8 +200,10 @@ def __init__(self, parent_win, jid, muc_data, acct):
 
         self.xml.settings_menu.set_menu_model(self.control_menu)
 
-        app.settings.connect_signal('gc_print_join_left_default', self.update_actions)
-        app.settings.connect_signal('gc_print_status_default', self.update_actions)
+        app.settings.connect_signal('gc_print_join_left_default',
+                                    self.update_actions)
+        app.settings.connect_signal('gc_print_status_default',
+                                    self.update_actions)
 
         self.register_events([
             ('bookmarks-received', ged.GUI1, self._on_bookmarks_received),
@@ -216,10 +218,6 @@ def __init__(self, parent_win, jid, muc_data, acct):
         self.update_ui()
         self.widget.show_all()
 
-        if app.settings.get('hide_groupchat_occupants_list'):
-            # Roster is shown by default, so toggle the roster button to hide it
-            self.show_roster()
-
         # PluginSystem: adding GUI extension point for this GroupchatControl
         # instance object
         app.plugin_manager.gui_extension_point('groupchat_control', self)
@@ -254,6 +252,7 @@ def _on_muc_state_changed(self, _contact, _signal_name):
         state = self.contact.state
         if state == MUCJoinedState.JOINED:
             self._set_control_active()
+            self.show_roster()
 
         elif state == MUCJoinedState.NOT_JOINED:
             self._set_control_inactive()