diff --git a/src/app/mainview/components/ScreensharingElementPreview.qml b/src/app/mainview/components/ScreensharingElementPreview.qml
deleted file mode 100644
index 024fc4b01604ec2f65e5e1b7852e90b6160ac76d..0000000000000000000000000000000000000000
--- a/src/app/mainview/components/ScreensharingElementPreview.qml
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2023 Savoir-faire Linux Inc.
- * Author: Nicolas Vengeon <Nicolas.vengeon@savoirfairelinux.com>
-
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-
-import net.jami.Adapters 1.1
-import net.jami.Models 1.1
-import net.jami.Constants 1.1
-
-import "../../commoncomponents"
-
-Rectangle {
-    id: root
-
-    color: JamiTheme.secondaryBackgroundColor
-    border.color: selectedScreenNumber === elementIndex ? JamiTheme.screenSelectionBorderColor : JamiTheme.tabbarBorderColor
-
-    width: elementWidth
-    height: 3 * width / 4
-
-    property var elementIndex
-    property string rectTitle
-    property var rId
-    property bool isSelectAllScreens
-
-    Text {
-        id: textTitle
-
-        anchors.top: root.top
-        anchors.topMargin: marginSize
-        anchors.horizontalCenter: root.horizontalCenter
-        width: root.width - 2 * marginSize
-
-        font.pointSize: JamiTheme.textFontSize
-        text: rectTitle
-        elide: Text.ElideRight
-        horizontalAlignment: Text.AlignHCenter
-        color: JamiTheme.textColor
-    }
-
-    VideoView {
-        anchors.top: textTitle.bottom
-        anchors.topMargin: 10
-        anchors.horizontalCenter: root.horizontalCenter
-        height: root.height - 50
-        width: root.width - 50
-
-        Component.onDestruction: {
-            VideoDevices.stopDevice(rendererId)
-        }
-        Component.onCompleted: {
-            if (root.rId !== "") {
-                rendererId = VideoDevices.startDevice(root.rId)
-            }
-        }
-    }
-
-    MouseArea {
-        anchors.fill: parent
-        acceptedButtons: Qt.LeftButton
-
-        onClicked: {
-            if (selectedScreenNumber !== root.elementIndex) {
-                selectedScreenNumber = root.elementIndex
-            }
-        }
-    }
-}
diff --git a/src/app/mainview/components/SelectScreen.qml b/src/app/mainview/components/SelectScreen.qml
index 13cadcf904202d76d4dd6e96198aecaaab0193ad..dcd35feaa61d3c8c65798aed222783b8251d2d83 100644
--- a/src/app/mainview/components/SelectScreen.qml
+++ b/src/app/mainview/components/SelectScreen.qml
@@ -1,9 +1,8 @@
 /*
- * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
+ * Copyright (C) 2020-2022 Savoir-faire Linux Inc.
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
  * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
- * Author: Nicolas Vengeon <Nicolas.vengeon@savoirfairelinux.com>
-
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3 of the License, or
@@ -36,203 +35,371 @@ import "../../commoncomponents"
 Window {
     id: root
 
-    minimumHeight: minimumWidth * 3 / 4
-    minimumWidth: componentMinWidth + 2 * marginSize
-    modality: Qt.ApplicationModal
-    title: window ? JamiStrings.selectWindow : JamiStrings.selectScreen
-
     property bool window: false
-    property int selectedScreenNumber: -2
-    property bool selectAllScreens: selectedScreenNumber == -1
+
+    property int selectedScreenNumber: -1
+    property bool selectAllScreens: false
     property string currentPreview: ""
-    property var listModel: []
-    property real componentMinWidth: 350
-    property real marginSize: JamiTheme.preferredMarginSize
-    property real elementWidth: {
-        var layoutWidth = selectScreenWindowLayout.width
-        var minSize = componentMinWidth + 2 * marginSize
-        var numberElementPerRow = Math.floor(layoutWidth / minSize)
-        if (numberElementPerRow == 1 && layoutWidth > componentMinWidth * 1.5) {
-            numberElementPerRow = 2
-        }
-        if (window)
-            numberElementPerRow = Math.min(listModel.length, numberElementPerRow)
-        else
-            numberElementPerRow = Math.min(listModel.length + 1, numberElementPerRow)
-        var spacingLength = marginSize * (numberElementPerRow  + 2)
+    property var screens: []
+    property real componentMinWidth: 200
+    property real componentWidthDoubleColumn: screenSelectionScrollView.width / 2 -
+                                            screenSelectionScrollViewFlow.spacing / 2 - JamiTheme.preferredMarginSize
+    property real componentWidthSingleColumn: screenSelectionScrollView.width -
+                                              2 * JamiTheme.preferredMarginSize
 
-        return (layoutWidth - spacingLength) / numberElementPerRow
-    }
+    modality: Qt.ApplicationModal
+    title: window ? JamiStrings.selectWindow : JamiStrings.selectScreen
 
+    // How many rows the ScrollView should have.
     function calculateRepeaterModel() {
-        listModel = []
+        screens = []
         var idx
-        if (!root.window) {
-            for (idx in Qt.application.screens) {
-                listModel.push(JamiStrings.screen.arg(idx))
-            }
-        } else {
-            AvAdapter.getListWindows()
-            for (idx in AvAdapter.windowsNames) {
-                listModel.push(AvAdapter.windowsNames[idx])
-            }
+        for (idx in Qt.application.screens) {
+            screens.push(JamiStrings.screen.arg(idx))
+        }
+        AvAdapter.getListWindows()
+        for (idx in AvAdapter.windowsNames) {
+            screens.push(AvAdapter.windowsNames[idx])
         }
+
+        return screens.length
     }
 
     onVisibleChanged: {
         if (!visible)
             return
         if (!active) {
-            selectedScreenNumber = -2
+            selectedScreenNumber = -1
+            selectAllScreens = false
         }
         screenInfo.model = {}
+        screenInfo2.model = {}
         calculateRepeaterModel()
-        screenInfo.model = root.listModel
+        screenInfo.model = screens.length
+        screenInfo2.model = screens.length
+        windowsText.visible = root.window
     }
 
     Rectangle {
         id: selectScreenWindowRect
 
         anchors.fill: parent
+
         color: JamiTheme.backgroundColor
 
-        ColumnLayout {
-            id: selectScreenWindowLayout
+        ScrollView {
+            id: screenSelectionScrollView
 
-            anchors.fill: parent
+            anchors.topMargin: JamiTheme.preferredMarginSize
+            anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
 
-            Text {
-                font.pointSize: JamiTheme.menuFontSize
-                font.bold: true
-                text: root.window ? JamiStrings.windows : JamiStrings.screens
-                verticalAlignment: Text.AlignBottom
-                color: JamiTheme.textColor
-                Layout.margins: marginSize
-            }
+            width: selectScreenWindowRect.width
+            height: selectScreenWindowRect.height -
+                    (selectButton.height + JamiTheme.preferredMarginSize * 4)
 
-            ScrollView {
-                id: screenSelectionScrollView
+            clip: true
+            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+            ScrollBar.vertical.policy: ScrollBar.AlwaysOn
 
-                Layout.alignment: Qt.AlignCenter
-                Layout.preferredWidth: selectScreenWindowLayout.width
-                Layout.fillHeight: true
+            Flow {
+                id: screenSelectionScrollViewFlow
 
-                clip: true
-                ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-                ScrollBar.vertical.policy: ScrollBar.AsNeeded
+                anchors.fill: parent
+                topPadding: JamiTheme.preferredMarginSize
+                rightPadding: JamiTheme.preferredMarginSize
+                leftPadding: JamiTheme.preferredMarginSize
 
-                Flow {
-                    id: screenSelectionScrollViewFlow
+                spacing: JamiTheme.preferredMarginSize
 
-                    // https://bugreports.qt.io/browse/QTBUG-110323
+                Text {
                     width: screenSelectionScrollView.width
-                    height: screenSelectionScrollView.height
+                    height: JamiTheme.preferredFieldHeight
+
+                    font.pointSize: JamiTheme.menuFontSize
+                    font.bold: true
+                    text: JamiStrings.screens
+                    verticalAlignment: Text.AlignBottom
+                    color: JamiTheme.textColor
+                    visible: !root.window
+                }
+
+                Repeater {
+                    id: screenInfo
 
-                    topPadding: marginSize
-                    rightPadding: marginSize
-                    leftPadding: marginSize
-                    spacing: marginSize
+                    model: screens ? screens.length : 0
 
-                   ScreensharingElementPreview {
-                       id: screenSelectionRectAll
+                    delegate: Rectangle {
+                        id: screenItem
 
-                       visible: !root.window && Qt.application.screens.length > 1 && Qt.platform.os.toString() !== "windows"
-                       elementIndex: -1
-                       rectTitle: JamiStrings.allScreens
-                       rId: AvAdapter.getSharingResource(-1, "")
-                       isSelectAllScreens: true
-                   }
+                        color: JamiTheme.secondaryBackgroundColor
 
+                        width: componentWidthDoubleColumn > componentMinWidth ? componentWidthDoubleColumn : componentWidthSingleColumn
+                        height: 3 * width / 4
 
-                    Repeater {
-                        id: screenInfo
+                        border.color: selectedScreenNumber === index ? JamiTheme.screenSelectionBorderColor : JamiTheme.tabbarBorderColor
+                        visible: !root.window && JamiStrings.selectScreen !== screens[index] && index < Qt.application.screens.length
 
-                        model: listModel.length
+                        Text {
+                            id: screenName
+
+                            anchors.top: screenItem.top
+                            anchors.topMargin: 10
+                            anchors.horizontalCenter: screenItem.horizontalCenter
+                            width: parent.width
+                            font.pointSize: JamiTheme.textFontSize
+                            text: screens[index] ? screens[index] : ""
+                            elide: Text.ElideMiddle
+                            horizontalAlignment: Text.AlignHCenter
+                            color: JamiTheme.textColor
+                        }
 
-                        delegate: ScreensharingElementPreview {
-                            id: screenItem
+                        VideoView {
+                            id: screenPreview
 
-                            visible: JamiStrings.selectScreen !== listModel[index]
-                            elementIndex: index
-                            rectTitle: listModel[index] ? listModel[index] : ""
-                            rId: {
-                                if (root.window)
-                                    return rId = AvAdapter.getSharingResource(-2, AvAdapter.windowsIds[index])
-                                return rId = AvAdapter.getSharingResource(index, "")
+                            anchors.top: screenName.bottom
+                            anchors.topMargin: 10
+                            anchors.horizontalCenter: screenItem.horizontalCenter
+                            height: screenItem.height - 50
+                            width: screenItem.width - 50
+
+                            Component.onDestruction: {
+                                VideoDevices.stopDevice(rendererId)
+                            }
+                            Component.onCompleted: {
+                                if (visible) {
+                                    const rId = AvAdapter.getSharingResource(index)
+                                    if (rId !== "") {
+                                        rendererId = VideoDevices.startDevice(rId)
+                                    }
+                                }
                             }
-                            isSelectAllScreens: false
+                        }
 
-                            Connections {
-                                target: AvAdapter
+                        MouseArea {
+                            anchors.fill: screenItem
+                            acceptedButtons: Qt.LeftButton
 
-                                function onScreenCaptured(screenNumber, source) {
-                                    if (screenNumber === -1 && !root.window)
-                                        screenShotAll.source = JamiQmlUtils.base64StringTitle + source
+                            onClicked: {
+                                selectAllScreens = false
+                                if (selectedScreenNumber == -1
+                                        || selectedScreenNumber !== index) {
+                                    selectedScreenNumber = index
                                 }
                             }
                         }
+
+                        Connections {
+                            target: AvAdapter
+
+                            function onScreenCaptured(screenNumber, source) {
+                                if (screenNumber === -1)
+                                    screenShotAll.source = JamiQmlUtils.base64StringTitle + source
+                            }
+                        }
                     }
                 }
-            }
 
-            RowLayout {
-                Layout.margins: marginSize
-                Layout.preferredWidth: selectScreenWindowLayout.width
-                Layout.preferredHeight: childrenRect.height
-                spacing: marginSize
-
-                MaterialButton {
-                    id: selectButton
-
-                    Layout.maximumWidth: 200
-                    Layout.fillWidth: true
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.leftMargin: marginSize
-
-                    enabled: selectedScreenNumber != -2
-                    opacity: enabled ? 1.0 : 0.5
-
-                    color: JamiTheme.buttonTintedBlack
-                    hoveredColor: JamiTheme.buttonTintedBlackHovered
-                    pressedColor: JamiTheme.buttonTintedBlackPressed
-                    secondary: true
-                    autoAccelerator: true
-
-                    text: window ? JamiStrings.shareWindow : JamiStrings.shareScreen
-
-                    onClicked: {
-                        if (selectAllScreens)
-                            AvAdapter.shareAllScreens()
-                        else {
-                            if (!root.window)
-                                AvAdapter.shareEntireScreen(selectedScreenNumber)
-                            else {
-                                AvAdapter.shareWindow(AvAdapter.windowsIds[selectedScreenNumber])
+                Rectangle {
+                    id: screenSelectionRectAll
+
+                    color: JamiTheme.secondaryBackgroundColor
+
+                    width: componentWidthDoubleColumn > componentMinWidth ? componentWidthDoubleColumn : componentWidthSingleColumn
+                    height: 3 * width / 4
+
+                    border.color: selectAllScreens ? JamiTheme.screenSelectionBorderColor : JamiTheme.tabbarBorderColor
+
+                    visible: !root.window && Qt.application.screens.length > 1 && Qt.platform.os.toString() !== "windows"
+
+                    Text {
+                        id: screenNameAll
+
+                        anchors.top: screenSelectionRectAll.top
+                        anchors.topMargin: 10
+                        anchors.horizontalCenter: screenSelectionRectAll.horizontalCenter
+
+                        font.pointSize: JamiTheme.textFontSize
+                        text: JamiStrings.allScreens
+                        color: JamiTheme.textColor
+                    }
+
+                    VideoView {
+                        id: screenShotAll
+
+                        anchors.top: screenNameAll.bottom
+                        anchors.topMargin: 10
+                        anchors.horizontalCenter: screenSelectionRectAll.horizontalCenter
+                        height: screenSelectionRectAll.height - 50
+                        width: screenSelectionRectAll.width - 50
+
+                        Component.onDestruction: {
+                            VideoDevices.stopDevice(rendererId)
+                        }
+                        Component.onCompleted: {
+                            if (visible) {
+                                const rId = AvAdapter.getSharingResource(-1)
+                                if (rId !== "") {
+                                    rendererId = VideoDevices.startDevice(rId)
+                                }
                             }
                         }
-                        root.close()
                     }
+
+                    MouseArea {
+                        anchors.fill: parent
+                        acceptedButtons: Qt.LeftButton
+
+                        onClicked: {
+                            selectedScreenNumber = -1
+                            selectAllScreens = true
+                        }
+                    }
+                }
+
+                Text {
+                    id: windowsText
+                    width: screenSelectionScrollView.width
+                    height: JamiTheme.preferredFieldHeight
+
+                    font.pointSize: JamiTheme.menuFontSize
+                    font.bold: true
+                    text: JamiStrings.windows
+                    verticalAlignment: Text.AlignBottom
+                    color: JamiTheme.textColor
+                    visible: root.window
                 }
 
-                MaterialButton {
-                    id: cancelButton
+                Repeater {
+                    id: screenInfo2
 
-                    Layout.maximumWidth: 200
-                    Layout.fillWidth: true
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.rightMargin: marginSize
+                    model: screens ? screens.length : 0
 
-                    color: JamiTheme.buttonTintedBlack
-                    hoveredColor: JamiTheme.buttonTintedBlackHovered
-                    pressedColor: JamiTheme.buttonTintedBlackPressed
-                    secondary: true
-                    autoAccelerator: true
+                    delegate: Rectangle {
+                        id: screenItem2
 
-                    text: JamiStrings.optionCancel
+                        color: JamiTheme.secondaryBackgroundColor
 
-                    onClicked: root.close()
+                        width: componentWidthDoubleColumn > componentMinWidth ? componentWidthDoubleColumn : componentWidthSingleColumn
+                        height: 3 * width / 4
+
+                        border.color: selectedScreenNumber === index ? JamiTheme.screenSelectionBorderColor : JamiTheme.tabbarBorderColor
+                        visible: root.window && JamiStrings.selectScreen !== screens[index] && index >= Qt.application.screens.length
+
+                        Text {
+                            id: screenName2
+
+                            anchors.top: screenItem2.top
+                            anchors.topMargin: 10
+                            anchors.horizontalCenter: screenItem2.horizontalCenter
+                            width: parent.width
+                            font.pointSize: JamiTheme.textFontSize
+                            text: screens[index] ? screens[index] : ""
+                            elide: Text.ElideMiddle
+                            horizontalAlignment: Text.AlignHCenter
+                            color: JamiTheme.textColor
+                        }
+
+                        VideoView {
+                            id: screenPreview2
+
+                            anchors.top: screenName2.bottom
+                            anchors.topMargin: 10
+                            anchors.horizontalCenter: screenItem2.horizontalCenter
+                            anchors.leftMargin: 25
+                            anchors.rightMargin: 25
+                            height: screenItem2.height - 60
+                            width: screenItem2.width - 50
+
+                            Component.onDestruction: {
+                                VideoDevices.stopDevice(rendererId)
+                            }
+                            Component.onCompleted: {
+                                if (visible) {
+                                    const rId = AvAdapter.getSharingResource(-2, AvAdapter.windowsIds[index - Qt.application.screens.length], AvAdapter.windowsNames[index - Qt.application.screens.length])
+                                    if (rId !== "") {
+                                        rendererId = VideoDevices.startDevice(rId)
+                                    }
+                                }
+                            }
+                        }
+
+                        MouseArea {
+                            anchors.fill: screenItem2
+                            acceptedButtons: Qt.LeftButton
+
+                            onClicked: {
+                                selectAllScreens = false
+                                if (selectedScreenNumber == -1
+                                        || selectedScreenNumber !== index) {
+                                    selectedScreenNumber = index
+                                }
+                            }
+                        }
+                    }
                 }
             }
         }
     }
+
+    RowLayout {
+        anchors.bottom: selectScreenWindowRect.bottom
+        anchors.bottomMargin: JamiTheme.preferredMarginSize
+        anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
+
+        width: parent.width
+        height: childrenRect.height
+        spacing: JamiTheme.preferredMarginSize
+
+        MaterialButton {
+            id: selectButton
+
+            Layout.maximumWidth: 200
+            Layout.fillWidth: true
+            Layout.alignment: Qt.AlignHCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+
+            enabled: selectedScreenNumber != -1 || selectAllScreens
+            opacity: enabled ? 1.0 : 0.5
+
+            color: JamiTheme.buttonTintedBlack
+            hoveredColor: JamiTheme.buttonTintedBlackHovered
+            pressedColor: JamiTheme.buttonTintedBlackPressed
+            secondary: true
+            autoAccelerator: true
+
+            text: window ? JamiStrings.shareWindow : JamiStrings.shareScreen
+
+            onClicked: {
+                if (selectAllScreens)
+                    AvAdapter.shareAllScreens()
+                else {
+                    if (selectedScreenNumber < Qt.application.screens.length)
+                        AvAdapter.shareEntireScreen(selectedScreenNumber)
+                    else {
+                        AvAdapter.shareWindow(AvAdapter.windowsIds[selectedScreenNumber - Qt.application.screens.length], AvAdapter.windowsNames[selectedScreenNumber - Qt.application.screens.length])
+                    }
+                }
+                root.close()
+            }
+        }
+
+        MaterialButton {
+            id: cancelButton
+
+            Layout.maximumWidth: 200
+            Layout.fillWidth: true
+            Layout.alignment: Qt.AlignHCenter
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+
+            color: JamiTheme.buttonTintedBlack
+            hoveredColor: JamiTheme.buttonTintedBlackHovered
+            pressedColor: JamiTheme.buttonTintedBlackPressed
+            secondary: true
+            autoAccelerator: true
+
+            text: JamiStrings.optionCancel
+
+            onClicked: root.close()
+        }
+    }
 }