Open: mchat.php
Find:
				// Grab group details for legend display for who is online on the custom page.
				if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
				{
					$sql = 'SELECT group_id, group_name, group_colour, group_type FROM ' . GROUPS_TABLE . ' 
						WHERE group_legend = 1 
							ORDER BY group_name ASC';
				}
				else
				{
					$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type FROM ' . GROUPS_TABLE . ' g 
						LEFT JOIN ' . USER_GROUP_TABLE . ' ug ON (g.group_id = ug.group_id AND ug.user_id = ' . $user->data['user_id'] . ' AND ug.user_pending = 0) 
							WHERE g.group_legend = 1 
								AND (g.group_type <> ' . GROUP_HIDDEN . ' 
									OR ug.user_id = ' . (int) $user->data['user_id'] . ') 
							ORDER BY g.group_name ASC';
				}
				$result = $db->sql_query($sql);

Replace With:
				$order_legend = ($config['legend_sort_groupname']) ? 'group_name' : 'group_legend';
				// Grab group details for legend display for who is online on the custom page.
				if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
				{
					$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend FROM ' . GROUPS_TABLE . ' 
						WHERE group_legend > 0 
							ORDER BY ' . $order_legend . ' ASC';
				}
				else
				{
					$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type, g.group_legend FROM ' . GROUPS_TABLE . ' g 
						LEFT JOIN ' . USER_GROUP_TABLE . ' ug ON (g.group_id = ug.group_id AND ug.user_id = ' . $user->data['user_id'] . ' AND ug.user_pending = 0) 
							WHERE g.group_legend > 0 
								AND (g.group_type <> ' . GROUP_HIDDEN . ' 
									OR ug.user_id = ' . (int) $user->data['user_id'] . ') 
							ORDER BY g.' . $order_legend . ' ASC';
				}
				$result = $db->sql_query($sql);