diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml
index b9a3707f2f107a5128aa237512226d63801c1f86..ec7c48752d98f815f61c5c38f083e6892258895e 100644
--- a/src/constant/JamiTheme.qml
+++ b/src/constant/JamiTheme.qml
@@ -91,6 +91,7 @@ Item {
     property int menuFontSize: 12
 
     property int maximumWidthSettingsView: 600
+    property int settingsHeaderpreferredHeight: 64
     property int preferredFieldWidth: 256
     property int preferredFieldHeight: 32
     property int preferredMarginSize: 16
diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml
index dc41ecd0b75a4a474bc6a5bf8bd48156d56ca404..1e5b95b5411aef1a5e9e0d2e02991881ac1669be 100644
--- a/src/settingsview/SettingsView.qml
+++ b/src/settingsview/SettingsView.qml
@@ -134,6 +134,7 @@ Rectangle {
 
     Rectangle {
         id: settingsViewRect
+
         anchors.fill: root
 
         signal stopAudioMeter
@@ -151,79 +152,132 @@ Rectangle {
             }
         }
 
-        StackLayout {
-            id: rightSettingsWidget
+        SettingsHeader {
+            id: settingsHeader
 
-            anchors.fill: parent
+            anchors.top: settingsViewRect.top
+            anchors.left: settingsViewRect.left
+            anchors.leftMargin: {
+                var pageWidth = rightSettingsStackLayout.itemAt(
+                            rightSettingsStackLayout.currentIndex).contentWidth
+                return (settingsViewRect.width - pageWidth) / 2 + JamiTheme.preferredMarginSize
+            }
 
-            property int pageIdCurrentAccountSettingsPage: 0
-            property int pageIdGeneralSettingsPage: 1
-            property int pageIdAvSettingPage: 2
-            property int pageIdPluginSettingsPage: 3
+            height: JamiTheme.settingsHeaderpreferredHeight
 
-            currentIndex: {
+            title: {
                 switch(selectedMenu){
                     case SettingsView.Account:
-                        return pageIdCurrentAccountSettingsPage
+                        return qsTr("Account Settings")
                     case SettingsView.General:
-                        return pageIdGeneralSettingsPage
+                        return qsTr("General")
                     case SettingsView.Media:
-                        return pageIdAvSettingPage
+                        return JamiStrings.avSettingsTitle
                     case SettingsView.Plugin:
-                        return pageIdPluginSettingsPage
+                        return qsTr("Plugin")
                 }
             }
 
-            // current account setting scroll page, index 0
-            CurrentAccountSettings {
-                id: pageIdCurrentAccountSettings
+            onBackArrowClicked: root.settingsBackArrowClicked()
+        }
+
+        ScrollView {
+            id: settingsViewScrollView
+
+            property ScrollBar vScrollBar: ScrollBar.vertical
+
+            anchors.top: settingsHeader.bottom
+            anchors.horizontalCenter: settingsViewRect.horizontalCenter
+
+            height: settingsViewRect.height - settingsHeader.height
+            width: settingsViewRect.width
 
-                Layout.fillHeight: true
-                Layout.fillWidth: true
+            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+            ScrollBar.vertical.policy: ScrollBar.AsNeeded
 
-                isSIP: settingsViewRect.isSIP
+            clip: true
+            contentHeight: rightSettingsStackLayout.height
 
-                onNavigateToMainView: {
-                    leaveSettingsSlot(true)
+            StackLayout {
+                id: rightSettingsStackLayout
+
+                anchors.centerIn: parent
+
+                width: settingsViewScrollView.width
+
+                property int pageIdCurrentAccountSettingsPage: 0
+                property int pageIdGeneralSettingsPage: 1
+                property int pageIdAvSettingPage: 2
+                property int pageIdPluginSettingsPage: 3
+
+                currentIndex: {
+                    switch(selectedMenu){
+                        case SettingsView.Account:
+                            return pageIdCurrentAccountSettingsPage
+                        case SettingsView.General:
+                            return pageIdGeneralSettingsPage
+                        case SettingsView.Media:
+                            return pageIdAvSettingPage
+                        case SettingsView.Plugin:
+                            return pageIdPluginSettingsPage
+                    }
                 }
 
-                onNavigateToNewWizardView: {
-                    leaveSettingsSlot(false)
+                Component.onCompleted: {
+                    // avoid binding loop
+                    height = Qt.binding(function (){
+                        return Math.max(
+                                    rightSettingsStackLayout.itemAt(currentIndex).preferredHeight,
+                                    settingsViewScrollView.height)
+                    })
                 }
-            }
 
-            // general setting page, index 1
-            GeneralSettingsPage {
-                id: generalSettings
+                // current account setting scroll page, index 0
+                CurrentAccountSettings {
+                    id: pageIdCurrentAccountSettings
 
-                Layout.fillHeight: true
-                Layout.fillWidth: true
-            }
+                    Layout.alignment: Qt.AlignCenter
 
-            // av setting page, index 2
-            AvSettingPage {
-                id: avSettings
+                    isSIP: settingsViewRect.isSIP
 
-                Layout.fillHeight: true
-                Layout.fillWidth: true
-            }
+                    onNavigateToMainView: {
+                        leaveSettingsSlot(true)
+                    }
 
-            // plugin setting page, index 3
-            PluginSettingsPage {
-                id: pluginSettings
+                    onNavigateToNewWizardView: {
+                        leaveSettingsSlot(false)
+                    }
 
-                Layout.fillHeight: true
-                Layout.fillWidth: true
-            }
-        }
-    }
+                    onAdvancedSettingsToggled: {
+                        if (settingsVisible)
+                            settingsViewScrollView.vScrollBar.position =
+                                    getAdvancedSettingsScrollPosition()
+                        else
+                            settingsViewScrollView.vScrollBar.position = 0
+                    }
+                }
+
+                // general setting page, index 1
+                GeneralSettingsPage {
+                    id: generalSettings
+
+                    Layout.alignment: Qt.AlignCenter
+                }
 
+                // av setting page, index 2
+                AvSettingPage {
+                    id: avSettings
 
-    // Back button signal redirection
-    Component.onCompleted: {
-        pageIdCurrentAccountSettings.backArrowClicked.connect(settingsBackArrowClicked)
-        generalSettings.backArrowClicked.connect(settingsBackArrowClicked)
-        avSettings.backArrowClicked.connect(settingsBackArrowClicked)
-        pluginSettings.backArrowClicked.connect(settingsBackArrowClicked)
+                    Layout.alignment: Qt.AlignCenter
+                }
+
+                // plugin setting page, index 3
+                PluginSettingsPage {
+                    id: pluginSettings
+
+                    Layout.alignment: Qt.AlignCenter
+                }
+            }
+        }
     }
 }
diff --git a/src/settingsview/components/AdvancedCallSettings.qml b/src/settingsview/components/AdvancedCallSettings.qml
index 28afeb89b920d8b83ce7da51712e737b91636184..066a618c10faa27e0e6a3a5c01d079f638c69be0 100644
--- a/src/settingsview/components/AdvancedCallSettings.qml
+++ b/src/settingsview/components/AdvancedCallSettings.qml
@@ -123,7 +123,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnRingtone
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.selectCustomRingtone
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -143,4 +143,4 @@ ColumnLayout {
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/settingsview/components/AdvancedJamiSecuritySettings.qml b/src/settingsview/components/AdvancedJamiSecuritySettings.qml
index 59c8a99b2f1ae62934b6dbdaca4bd2f77a0461d3..f436c3d949653a0f643b52be3bf464a02b9d51ec 100644
--- a/src/settingsview/components/AdvancedJamiSecuritySettings.qml
+++ b/src/settingsview/components/AdvancedJamiSecuritySettings.qml
@@ -136,7 +136,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnCACert
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.caCertificate
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -147,7 +147,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnUserCert
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.userCertificate
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -158,7 +158,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnPrivateKey
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.privateKey
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -175,4 +175,4 @@ ColumnLayout {
             titleField: JamiStrings.privateKeyPassword
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/settingsview/components/AdvancedSIPSecuritySettings.qml b/src/settingsview/components/AdvancedSIPSecuritySettings.qml
index fbb3c64ba62885f4a1cb9e7a8842c51c9f6c2972..cc612ca61e7822aed86fe86499900320cea5ed19 100644
--- a/src/settingsview/components/AdvancedSIPSecuritySettings.qml
+++ b/src/settingsview/components/AdvancedSIPSecuritySettings.qml
@@ -202,7 +202,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnSIPCACert
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.caCertificate
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -213,7 +213,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnSIPUserCert
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.userCertificate
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -224,7 +224,7 @@ ColumnLayout {
         SettingMaterialButton {
             id: btnSIPPrivateKey
             Layout.fillWidth: true
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
             titleField: JamiStrings.privateKey
             source: "qrc:/images/icons/round-folder-24px.svg"
@@ -282,7 +282,6 @@ ColumnLayout {
 
             Layout.fillWidth: true
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.rightMargin: JamiTheme.preferredMarginSize
 
             labelText: JamiStrings.tlsProtocol
             fontPointSize: JamiTheme.settingsFontSize
@@ -326,4 +325,4 @@ ColumnLayout {
             onNewValue: SettingsAdapter.negotiationTimeoutSpinBoxValueChanged(valueField)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/settingsview/components/AdvancedSettings.qml b/src/settingsview/components/AdvancedSettings.qml
index fe1ed5b28e6e542043857e0570f70156379af862..6d8a0cca3831166afb00fdf24002e9259b9a28f6 100644
--- a/src/settingsview/components/AdvancedSettings.qml
+++ b/src/settingsview/components/AdvancedSettings.qml
@@ -34,8 +34,7 @@ ColumnLayout {
 
     property bool isSIP
     property int itemWidth
-
-    signal scrolled
+    property alias settingsVisible: advancedSettingsView.visible
 
     function updateAdvancedAccountInfos() {
         advancedCallSettings.updateCallSettingsInfos()
@@ -90,77 +89,87 @@ ColumnLayout {
                 advancedSettingsView.visible = !advancedSettingsView.visible
                 if(advancedSettingsView.visible)
                     updateAdvancedAccountInfos()
-                scrolled()
             }
         }
     }
 
     ColumnLayout {
         id: advancedSettingsView
+
+        Layout.fillWidth: true
+
         visible: false
 
         AdvancedCallSettings {
             id: advancedCallSettings
-            isSIP: root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            isSIP: root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedVoiceMailSettings {
             id: advancedVoiceMailSettings
-            visible: root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedSIPSecuritySettings {
             id: advancedSIPSecuritySettings
-            visible: root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedNameServerSettings {
             id: advancedNameServerSettings
-            visible: !root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: !root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedOpenDHTSettings {
             id: advancedOpenDHTSettings
-            visible: !root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: !root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedJamiSecuritySettings {
             id: advancedJamiSecuritySettings
-            visible: !root.isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: !root.isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedConnectivitySettings {
             id: advancedConnectivitySettings
-            itemWidth: root.itemWidth
-            isSIP: root.isSIP
 
             Layout.fillWidth: true
+
+            itemWidth: root.itemWidth
+            isSIP: root.isSIP
         }
 
         AdvancedPublicAddressSettings {
             id: advancedPublicAddressSettings
-            visible: isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: isSIP
+            itemWidth: root.itemWidth
         }
 
         AdvancedMediaSettings {
@@ -171,10 +180,11 @@ ColumnLayout {
 
         AdvancedSDPSettings {
             id: advancedSDPStettings
-            visible: isSIP
-            itemWidth: root.itemWidth
 
             Layout.fillWidth: true
+
+            visible: isSIP
+            itemWidth: root.itemWidth
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/settingsview/components/AudioSettings.qml b/src/settingsview/components/AudioSettings.qml
index 4e57bf1463e6e9a01b24f705034cf84ddcdd10d1..9ac0b1f0da4c3cbb3a191289425ccddf88612d33 100644
--- a/src/settingsview/components/AudioSettings.qml
+++ b/src/settingsview/components/AudioSettings.qml
@@ -106,7 +106,7 @@ ColumnLayout {
         id: inputComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.microphone
@@ -118,7 +118,9 @@ ColumnLayout {
 
         onIndexChanged: {
             stopAudioMeter(false)
-            var selectedInputDeviceName = comboModel.data(comboModel.index( modelIndex, 0), AudioInputDeviceModel.Device_ID)
+            var selectedInputDeviceName = comboModel.data(
+                        comboModel.index(modelIndex, 0),
+                        AudioInputDeviceModel.Device_ID)
             AVModel.setInputDevice(selectedInputDeviceName)
             startAudioMeter(false)
         }
@@ -141,7 +143,7 @@ ColumnLayout {
         id: outputComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.outputDevice
@@ -153,7 +155,9 @@ ColumnLayout {
 
         onIndexChanged: {
             stopAudioMeter(false)
-            var selectedOutputDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index( modelIndex, 0), AudioOutputDeviceModel.Device_ID)
+            var selectedOutputDeviceName = audioOutputDeviceModel.data(
+                        audioOutputDeviceModel.index(modelIndex, 0),
+                        AudioOutputDeviceModel.Device_ID)
             AVModel.setOutputDevice(selectedOutputDeviceName)
             startAudioMeter(false)
         }
@@ -163,7 +167,7 @@ ColumnLayout {
         id: ringtoneDeviceComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.ringtoneDevice
@@ -175,7 +179,9 @@ ColumnLayout {
 
         onIndexChanged: {
             stopAudioMeter(false)
-            var selectedRingtoneDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index( modelIndex, 0), AudioOutputDeviceModel.Device_ID)
+            var selectedRingtoneDeviceName = audioOutputDeviceModel.data(
+                        audioOutputDeviceModel.index(modelIndex, 0),
+                        AudioOutputDeviceModel.Device_ID)
             AVModel.setRingtoneDevice(selectedRingtoneDeviceName)
             startAudioMeter(false)
         }
@@ -185,7 +191,7 @@ ColumnLayout {
         id: audioManagerComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.audioManager
@@ -196,7 +202,8 @@ ColumnLayout {
 
         onIndexChanged: {
             stopAudioMeter(false)
-            var selectedAudioManager = comboModel.data(comboModel.index( modelIndex, 0), AudioManagerListModel.AudioManagerID)
+            var selectedAudioManager = comboModel.data(
+                        comboModel.index(modelIndex, 0), AudioManagerListModel.AudioManagerID)
             AVModel.setAudioManager(selectedAudioManager)
             startAudioMeter(false)
             populateAudioSettings()
diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml
index 4ba74194ac3ed2c7d67c158a87f95201ff4132d5..eba0c1e4176db141a1bac1be77a4cb2d1fad3ccf 100644
--- a/src/settingsview/components/AvSettingPage.qml
+++ b/src/settingsview/components/AvSettingPage.qml
@@ -32,8 +32,8 @@ Rectangle {
     id: root
 
     property int preferredColumnWidth: Math.min(root.width / 2 - 50, 275)
-
-    signal backArrowClicked
+    property int contentWidth: avSettingsColumnLayout.width
+    property int preferredHeight: avSettingsColumnLayout.implicitHeight
 
     onVisibleChanged: {
         if (!visible) {
@@ -48,60 +48,33 @@ Rectangle {
     }
 
     ColumnLayout {
+        id: avSettingsColumnLayout
+
         anchors.centerIn: root
 
         height: root.height
         width: Math.min(JamiTheme.maximumWidthSettingsView, root.width)
 
-        SettingsHeader {
-            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            Layout.leftMargin: JamiTheme.preferredMarginSize
-            Layout.fillWidth: true
-            Layout.preferredHeight: 64
+        // Audio
+        AudioSettings {
+            id: audioSettings
 
-            title: JamiStrings.avSettingsTitle
+            Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            onBackArrowClicked: root.backArrowClicked()
+            itemWidth: preferredColumnWidth
         }
 
-        ScrollView {
-            id: avSettingsScrollView
+        // Video
+        VideoSettings {
+            id: videoSettings
 
-            property ScrollBar vScrollBar: ScrollBar.vertical
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
-
-            Layout.fillHeight: true
             Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            focus: true
-            clip: true
-
-            ColumnLayout {
-                width: avSettingsScrollView.width
-
-                // Audio
-                AudioSettings {
-                    id: audioSettings
-
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-
-                    itemWidth: preferredColumnWidth
-                }
-
-                // Video
-                VideoSettings {
-                    id: videoSettings
-
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-
-                    itemWidth: preferredColumnWidth
-                }
-            }
+            itemWidth: preferredColumnWidth
         }
     }
 }
diff --git a/src/settingsview/components/CurrentAccountSettings.qml b/src/settingsview/components/CurrentAccountSettings.qml
index 36a2fd87f22043201770649a0b32986b8ec2eabf..04696be95c7402f4f7b204189b8c968ef19223cd 100644
--- a/src/settingsview/components/CurrentAccountSettings.qml
+++ b/src/settingsview/components/CurrentAccountSettings.qml
@@ -36,11 +36,13 @@ Rectangle {
 
     property bool isSIP
 
+    property int contentWidth: currentAccountSettingsColumnLayout.width
+    property int preferredHeight: currentAccountSettingsColumnLayout.implicitHeight
     property int preferredColumnWidth : Math.min(root.width / 2 - 50, 350)
 
     signal navigateToMainView
     signal navigateToNewWizardView
-    signal backArrowClicked
+    signal advancedSettingsToggled(bool settingsVisible)
 
     function isPhotoBoothOpened() {
         return accountProfile.isPhotoBoothOpened()
@@ -86,6 +88,9 @@ Rectangle {
         bannedContacts.connectCurrentAccount(false)
     }
 
+    function getAdvancedSettingsScrollPosition() {
+        return advancedSettings.y / currentAccountSettingsColumnLayout.height
+    }
 
     function setPasswordButtonText() {
         var hasPassword = AccountAdapter.hasPassword()
@@ -175,176 +180,148 @@ Rectangle {
     }
 
     ColumnLayout {
+        id: currentAccountSettingsColumnLayout
+
         anchors.centerIn: root
 
         height: root.height
         width: Math.min(JamiTheme.maximumWidthSettingsView, root.width)
 
-        SettingsHeader {
-            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+        ToggleSwitch {
+            id: accountEnableCheckBox
+
+            Layout.topMargin: JamiTheme.preferredMarginSize
             Layout.leftMargin: JamiTheme.preferredMarginSize
-            Layout.fillWidth: true
-            Layout.preferredHeight: 64
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            title: qsTr("Account Settings")
+            labelText: JamiStrings.enableAccount
+            fontPointSize: JamiTheme.headerFontSize
 
-            onBackArrowClicked: root.backArrowClicked()
+            onSwitchToggled: AccountAdapter.model.setAccountEnabled(
+                                 AccountAdapter.currentAccountId, checked)
         }
 
-        ScrollView {
-            id: scrollView
-
-            property ScrollBar vScrollBar: ScrollBar.vertical
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
+        AccountProfile {
+            id: accountProfile
 
-            Layout.fillHeight: true
             Layout.fillWidth: true
+            Layout.topMargin: JamiTheme.preferredMarginSize
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+        }
 
-            focus: true
-            clip: true
-
-            ColumnLayout {
-                id: accountLayout
-
-                width: scrollView.width
-
-                ToggleSwitch {
-                    id: accountEnableCheckBox
-
-                    Layout.topMargin: JamiTheme.preferredMarginSize
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-
-                    labelText: JamiStrings.enableAccount
-                    fontPointSize: JamiTheme.headerFontSize
-
-                    onSwitchToggled: AccountAdapter.model.setAccountEnabled(
-                                         AccountAdapter.currentAccountId, checked)
-                }
-
-                AccountProfile {
-                    id: accountProfile
-
-                    Layout.fillWidth: true
-                    Layout.topMargin: JamiTheme.preferredMarginSize
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                }
-
-                UserIdentity {
-                    id: userIdentity
-                    isSIP: root.isSIP
+        UserIdentity {
+            id: userIdentity
+            isSIP: root.isSIP
 
-                    Layout.fillWidth: true
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
+            Layout.fillWidth: true
+            Layout.alignment: Qt.AlignHCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                    itemWidth: preferredColumnWidth
-                }
+            itemWidth: preferredColumnWidth
+        }
 
-                MaterialButton {
-                    id: passwdPushButton
+        MaterialButton {
+            id: passwdPushButton
 
-                    visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.preferredWidth: JamiTheme.preferredFieldWidth
-                    Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
+            Layout.alignment: Qt.AlignHCenter
+            Layout.preferredWidth: JamiTheme.preferredFieldWidth
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                    color: JamiTheme.buttonTintedBlack
-                    hoveredColor: JamiTheme.buttonTintedBlackHovered
-                    pressedColor: JamiTheme.buttonTintedBlackPressed
-                    outlined: true
+            color: JamiTheme.buttonTintedBlack
+            hoveredColor: JamiTheme.buttonTintedBlackHovered
+            pressedColor: JamiTheme.buttonTintedBlackPressed
+            outlined: true
 
-                    toolTipText: AccountAdapter.hasPassword() ?
-                                JamiStrings.changeCurrentPassword : JamiStrings.setAPassword
-                    text: AccountAdapter.hasPassword() ? JamiStrings.changePassword : JamiStrings.setPassword
+            toolTipText: AccountAdapter.hasPassword() ?
+                        JamiStrings.changeCurrentPassword : JamiStrings.setAPassword
+            text: AccountAdapter.hasPassword() ? JamiStrings.changePassword : JamiStrings.setPassword
 
-                    source: "qrc:/images/icons/round-edit-24px.svg"
+            source: "qrc:/images/icons/round-edit-24px.svg"
 
-                    onClicked: {
-                        passwordClicked()
-                    }
-                }
+            onClicked: {
+                passwordClicked()
+            }
+        }
 
-                MaterialButton {
-                    id: btnExportAccount
+        MaterialButton {
+            id: btnExportAccount
 
-                    visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.preferredWidth: JamiTheme.preferredFieldWidth
-                    Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
+            Layout.alignment: Qt.AlignHCenter
+            Layout.preferredWidth: JamiTheme.preferredFieldWidth
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                    color: JamiTheme.buttonTintedBlack
-                    hoveredColor: JamiTheme.buttonTintedBlackHovered
-                    pressedColor: JamiTheme.buttonTintedBlackPressed
-                    outlined: true
+            color: JamiTheme.buttonTintedBlack
+            hoveredColor: JamiTheme.buttonTintedBlackHovered
+            pressedColor: JamiTheme.buttonTintedBlackPressed
+            outlined: true
 
-                    toolTipText: JamiStrings.tipBackupAccount
-                    text: JamiStrings.backupAccountBtn
+            toolTipText: JamiStrings.tipBackupAccount
+            text: JamiStrings.backupAccountBtn
 
-                    source: "qrc:/images/icons/round-save_alt-24px.svg"
+            source: "qrc:/images/icons/round-save_alt-24px.svg"
 
-                    onClicked: {
-                        exportAccountSlot()
-                    }
-                }
+            onClicked: {
+                exportAccountSlot()
+            }
+        }
 
-                MaterialButton {
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.preferredWidth: JamiTheme.preferredFieldWidth
-                    Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
+        MaterialButton {
+            Layout.alignment: Qt.AlignHCenter
+            Layout.preferredWidth: JamiTheme.preferredFieldWidth
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.topMargin: isSIP ? JamiTheme.preferredMarginSize : 0
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                    color: JamiTheme.buttonTintedRed
-                    hoveredColor: JamiTheme.buttonTintedRedHovered
-                    pressedColor: JamiTheme.buttonTintedRedPressed
+            color: JamiTheme.buttonTintedRed
+            hoveredColor: JamiTheme.buttonTintedRedHovered
+            pressedColor: JamiTheme.buttonTintedRedPressed
 
-                    text: JamiStrings.deleteAccount
+            text: JamiStrings.deleteAccount
 
-                    source: "qrc:/images/icons/delete_forever-24px.svg"
+            source: "qrc:/images/icons/delete_forever-24px.svg"
 
-                    onClicked: {
-                        delAccountSlot()
-                    }
-                }
+            onClicked: {
+                delAccountSlot()
+            }
+        }
 
-                LinkedDevices {
-                    id: linkedDevices
-                    visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
+        LinkedDevices {
+            id: linkedDevices
+            visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === ""
 
-                    Layout.fillWidth: true
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                }
+            Layout.fillWidth: true
+            Layout.alignment: Qt.AlignHCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+        }
 
-                BannedContacts {
-                    id: bannedContacts
-                    isSIP: root.isSIP
+        BannedContacts {
+            id: bannedContacts
+            isSIP: root.isSIP
 
-                    Layout.fillWidth: true
-                    Layout.alignment: Qt.AlignHCenter
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                }
+            Layout.fillWidth: true
+            Layout.alignment: Qt.AlignHCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+        }
 
-                AdvancedSettings {
-                    id: advancedSettings
+        AdvancedSettings {
+            id: advancedSettings
 
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                    Layout.bottomMargin: 8
+            Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+            Layout.bottomMargin: 8
 
-                    itemWidth: preferredColumnWidth
-                    isSIP: root.isSIP
+            itemWidth: preferredColumnWidth
+            isSIP: root.isSIP
 
-                    onScrolled: scrollView.vScrollBar.position = advancedSettings.y / accountLayout.height
-                }
-            }
+            onHeightChanged: advancedSettingsToggled(settingsVisible)
         }
     }
 }
diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml
index be925d8266acfc0903f1818023b4cee2c2849d81..f6ae17928e84a8965a5dbca5e40dc67f134ba394 100644
--- a/src/settingsview/components/GeneralSettingsPage.qml
+++ b/src/settingsview/components/GeneralSettingsPage.qml
@@ -32,66 +32,43 @@ Rectangle {
     id: root
 
     property int preferredColumnWidth : Math.min(root.width / 2 - 50, 350)
-
-    signal backArrowClicked
+    property int contentWidth: generalSettingsColumnLayout.width
+    property int preferredHeight: generalSettingsColumnLayout.implicitHeight
 
     ColumnLayout {
+        id: generalSettingsColumnLayout
+
         anchors.centerIn: root
 
         height: root.height
         width: Math.min(JamiTheme.maximumWidthSettingsView, root.width)
 
-        SettingsHeader {
-            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            Layout.leftMargin: JamiTheme.preferredMarginSize
+        // system setting panel
+        SystemSettings {
             Layout.fillWidth: true
-            Layout.preferredHeight: 64
-
-            title: qsTr("General")
+            Layout.topMargin: JamiTheme.preferredMarginSize
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            onBackArrowClicked: root.backArrowClicked()
+            itemWidth: preferredColumnWidth
         }
 
-        ScrollView {
-            id: generalSettingsScrollView
-
-            Layout.fillHeight: true
+        // call recording setting panel
+        RecordingSettings {
             Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            focus: true
-            clip: true
-
-            ColumnLayout {
-                width: generalSettingsScrollView.width
-
-                // system setting panel
-                SystemSettings {
-                    Layout.fillWidth: true
-                    Layout.topMargin: JamiTheme.preferredMarginSize
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-
-                    itemWidth: preferredColumnWidth
-                }
-
-                // call recording setting panel
-                RecordingSettings {
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-
-                    itemWidth: preferredColumnWidth
-                }
+            itemWidth: preferredColumnWidth
+        }
 
-                // update setting panel
-                UpdateSettings {
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                    Layout.bottomMargin: JamiTheme.preferredMarginSize
-                    visible: Qt.platform.os == "windows"? true : false
-                }
-            }
+        // update setting panel
+        UpdateSettings {
+            Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+            Layout.bottomMargin: JamiTheme.preferredMarginSize
+            visible: Qt.platform.os == "windows"? true : false
         }
     }
 }
diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml
index e8f94e78ba43b36df661f507158146e9846b0806..df8e5fb1062dc3281a97e81ceadff98c29ce340a 100644
--- a/src/settingsview/components/PluginSettingsPage.qml
+++ b/src/settingsview/components/PluginSettingsPage.qml
@@ -29,6 +29,9 @@ import "../../commoncomponents"
 Rectangle {
     id: root
 
+    property int contentWidth: pluginSettingsColumnLayout.width
+    property int preferredHeight: pluginSettingsColumnLayout.implicitHeight
+
     function populatePluginSettings() {
         enabledplugin.checked = PluginModel.getPluginsEnabled()
         pluginListSettingsView.visible = enabledplugin.checked
@@ -38,82 +41,62 @@ Rectangle {
         PluginModel.setPluginsEnabled(state)
     }
 
-    signal backArrowClicked
-
     ColumnLayout {
+        id: pluginSettingsColumnLayout
+
         anchors.centerIn: root
 
         height: root.height
         width: Math.min(JamiTheme.maximumWidthSettingsView, root.width)
 
-        SettingsHeader {
-            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            Layout.leftMargin: JamiTheme.preferredMarginSize
-            Layout.fillWidth: true
-            Layout.preferredHeight: 64
-
-            title: qsTr("Plugin")
+        ToggleSwitch {
+            id: enabledplugin
 
-            onBackArrowClicked: root.backArrowClicked()
-        }
-
-        ScrollView {
-            id: pluginScrollView
-
-            Layout.fillHeight: true
+            Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
             Layout.fillWidth: true
+            Layout.topMargin: JamiTheme.preferredMarginSize
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-            focus: true
-            clip: true
-
-            ColumnLayout {
-                width: pluginScrollView.width
+            labelText: "Enable"
+            fontPointSize: JamiTheme.headerFontSize
 
-                ToggleSwitch {
-                    id: enabledplugin
-                    Layout.fillWidth: true
-                    Layout.topMargin: JamiTheme.preferredMarginSize
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
+            onSwitchToggled: {
+                slotSetPluginEnabled(checked)
 
-                    labelText: "Enable"
-                    fontPointSize: JamiTheme.headerFontSize
+                pluginListSettingsView.visible = checked
+                if (!pluginListSettingsView.visible) {
+                    PluginModel.toggleCallMediaHandler("", true)
+                    pluginListSettingsView.hidePreferences()
+                }
+            }
+        }
 
-                    onSwitchToggled: {
-                        slotSetPluginEnabled(checked)
+        PluginListSettingsView {
+            id: pluginListSettingsView
 
-                        pluginListSettingsView.visible = checked
-                        if (!pluginListSettingsView.visible) {
-                            PluginModel.toggleCallMediaHandler("", true)
-                            pluginListSettingsView.hidePreferences()
-                        }
-                    }
-                }
+            Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
+            Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                PluginListSettingsView {
-                    id: pluginListSettingsView
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                    Layout.alignment: Qt.AlignHCenter
+            pluginListPreferencesView: pluginListPreferencesView
 
-                    pluginListPreferencesView: pluginListPreferencesView
+            Layout.topMargin: JamiTheme.preferredMarginSize
+            Layout.minimumHeight: 0
+            Layout.preferredHeight: childrenRect.height
+        }
 
-                    Layout.topMargin: JamiTheme.preferredMarginSize
-                    Layout.minimumHeight: 0
-                    Layout.preferredHeight: childrenRect.height
-                }
+        PluginListPreferencesView {
+            id: pluginListPreferencesView
 
-                PluginListPreferencesView {
-                    id: pluginListPreferencesView
-                    Layout.fillWidth: true
-                    Layout.leftMargin: JamiTheme.preferredMarginSize
-                    Layout.rightMargin: JamiTheme.preferredMarginSize
-                    Layout.bottomMargin: JamiTheme.preferredMarginSize
-                    Layout.minimumHeight: 0
-                    Layout.preferredHeight: childrenRect.height
-                }
-            }
+            Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
+            Layout.fillWidth: true
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+            Layout.bottomMargin: JamiTheme.preferredMarginSize
+            Layout.minimumHeight: 0
+            Layout.preferredHeight: childrenRect.height
         }
     }
 }
diff --git a/src/settingsview/components/RecordingSettings.qml b/src/settingsview/components/RecordingSettings.qml
index 897163d49076738ea2d3fa78c2aea9173085d9b6..b8bdc516283ab8dd22f3f09efb2f07258b69228c 100644
--- a/src/settingsview/components/RecordingSettings.qml
+++ b/src/settingsview/components/RecordingSettings.qml
@@ -174,7 +174,7 @@ ColumnLayout {
             id: recordPathButton
 
             Layout.alignment: Qt.AlignRight
-            Layout.fillHeight: true
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
             Layout.preferredWidth: itemWidth
 
             toolTipText: JamiStrings.tipRecordFolder
diff --git a/src/settingsview/components/SettingsComboBox.qml b/src/settingsview/components/SettingsComboBox.qml
index f69ab51d5c3ccc660900ec7344635661a7cd23a9..b6b10dc96470721b59f2d1283355a3498c0d6f79 100644
--- a/src/settingsview/components/SettingsComboBox.qml
+++ b/src/settingsview/components/SettingsComboBox.qml
@@ -52,17 +52,19 @@ RowLayout {
 
     ElidedTextLabel {
         id: label
+
         Layout.fillWidth: true
         Layout.preferredHeight: heightOfLayout
-        Layout.rightMargin: JamiTheme.preferredMarginSize
+        Layout.rightMargin: JamiTheme.preferredMarginSize / 2
 
         eText: qsTr(labelText)
         fontSize: JamiTheme.settingsFontSize
-        maxWidth: width
+        maxWidth: widthOfComboBox
     }
 
     SettingParaCombobox {
         id: comboBoxOfLayout
+
         Layout.preferredWidth: widthOfComboBox
         Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
diff --git a/src/settingsview/components/SystemSettings.qml b/src/settingsview/components/SystemSettings.qml
index eb32463e0a2a6031d62fb64628e50f3f97b368aa..84470d6f8d91413f04aa1dd338ce4e4d0af9d55a 100644
--- a/src/settingsview/components/SystemSettings.qml
+++ b/src/settingsview/components/SystemSettings.qml
@@ -127,7 +127,7 @@ ColumnLayout {
 
             Layout.alignment: Qt.AlignRight
             Layout.preferredWidth: itemWidth
-            Layout.fillHeight: true
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
             toolTipText: JamiStrings.tipChooseDownloadFolder
             text: downloadPath
diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml
index c2f12d70968ad9efd74c1e62aa1ce97313865555..16c5c96e8ee86c8c68ee70aafc6da411b037d74e 100644
--- a/src/settingsview/components/VideoSettings.qml
+++ b/src/settingsview/components/VideoSettings.qml
@@ -155,7 +155,7 @@ ColumnLayout {
         id: deviceComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.device
@@ -174,7 +174,7 @@ ColumnLayout {
         id: resolutionComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.resolution
@@ -193,7 +193,7 @@ ColumnLayout {
         id: fpsComboBoxSetting
 
         Layout.fillWidth: true
-        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+        Layout.preferredHeight: JamiTheme.preferredFieldHeight
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
         labelText: JamiStrings.fps
@@ -227,22 +227,21 @@ ColumnLayout {
     // video Preview
     Rectangle {
         id: rectBox
+
         Layout.alignment: Qt.AlignHCenter
-        Layout.maximumHeight: width * aspectRatio
-        Layout.minimumHeight: width * aspectRatio
         Layout.preferredHeight: width * aspectRatio
 
         Layout.minimumWidth: 200
         Layout.maximumWidth: 400
         Layout.preferredWidth: itemWidth * 2
         Layout.bottomMargin: JamiTheme.preferredMarginSize
+
         color: "white"
         radius: 5
 
         PreviewRenderer {
             id: previewWidget
             anchors.fill: rectBox
-            anchors.centerIn: rectBox
 
             layer.enabled: true
             layer.effect: OpacityMask {