diff --git a/src/qml/score/Score.qml b/src/qml/score/Score.qml
index a22939d43b2cfec5d8a13aa44522df10f128dd05..ca93a8e946a57f5d94042d3ea009982d34d1f3a1 100644
--- a/src/qml/score/Score.qml
+++ b/src/qml/score/Score.qml
@@ -79,46 +79,45 @@ Flickable {
     TscoreObject {
         id: scoreObj
 
-        width: score.width / scale
+        width: score.width / score.scale
         enableDoubleAccidentals: score.enableDoubleAccids
-        onClicked: currentNote = scoreObj.activeNote
+        onClicked: score.currentNote = scoreObj.activeNote
         onStaffCreate: {
-            staves.push(Qt.createComponent("qrc:/score/Staff.qml").createObject(score.contentItem));
-            score.lastStaff = staves[staves.length - 1];
+            score.staves.push(Qt.createComponent("qrc:/score/Staff.qml").createObject(score.contentItem, { score: score }));
+            score.lastStaff = score.staves[score.staves.length - 1];
         }
         onStavesHeightChanged: score.contentHeight = Math.max(stavesHeight, score.height)
         onStaffDestroying: staffNr => {
-            staves.splice(staffNr, 1);
-            lastStaff = staves[staves.length - 1];
+            score.staves.splice(staffNr, 1);
+            lastStaff = score.staves[score.staves.length - 1];
         }
         onNoteWasAdded: {
-            if (staves.length > 1)
+            if (score.staves.length > 1)
                 ensureVisible(lastNote.staffItem.y, lastNote.staffItem.height * scale);
 
         }
         onAllowAddingChanged: {
             if (allowAdding) {
-                if (!delControl)
-                    delControl = Qt.createComponent("qrc:/score/DelControl.qml").createObject(contentItem);
-                if (!noteAdd)
-                    noteAdd = Qt.createComponent("qrc:/score/NoteAdd.qml").createObject(contentItem);
-                if (!scoreToobox)
-                    scoreToobox = Qt.createComponent("qrc:/score/ScoreToolbox.qml").createObject(score);
-
+                if (!score.delControl)
+                    score.delControl = Qt.createComponent("qrc:/score/DelControl.qml").createObject(score.contentItem);
+                if (!score.noteAdd)
+                    score.noteAdd = Qt.createComponent("qrc:/score/NoteAdd.qml").createObject(score.contentItem);
+                if (!score.scoreToobox)
+                    score.scoreToobox = Qt.createComponent("qrc:/score/ScoreToolbox.qml").createObject(score);
             }
         }
         onActiveNoteChanged: {
-            if (!cursor) {
-                cursor = Qt.createComponent("qrc:/score/ScoreCursor.qml").createObject(contentItem);
-                cursor.parent = Qt.binding(function() {
+            if (!score.cursor) {
+                score.cursor = Qt.createComponent("qrc:/score/ScoreCursor.qml").createObject(score.contentItem);
+                score.cursor.parent = Qt.binding(function() {
                     return scoreObj.activeNote;
                 });
             }
-            if (!scoreToobox && !readOnly)
-                scoreToobox = Qt.createComponent("qrc:/score/ScoreToolbox.qml").createObject(score);
+            if (!score.scoreToobox && !score.readOnly)
+                score.scoreToobox = Qt.createComponent("qrc:/score/ScoreToolbox.qml").createObject(score);
 
         }
-        onScoreWasCleared: ensureVisible(0, 0)
+        onScoreWasCleared: score.ensureVisible(0, 0)
     }
 
     // entire score background
@@ -136,6 +135,7 @@ Flickable {
     Staff {
         id: staff0
 
+        score: score
         meter: Meter {
             parent: staff0
         }
@@ -165,7 +165,6 @@ Flickable {
             }
 
         }
-
     }
 
     ScrollBar.vertical: ScrollBar {
diff --git a/src/qml/score/Staff.qml b/src/qml/score/Staff.qml
index a42cd2ff7131927f3f599d2c6123dde1f7220ee6..c31c3ab8562b2190b420264df23e8f718a90f5a0 100644
--- a/src/qml/score/Staff.qml
+++ b/src/qml/score/Staff.qml
@@ -2,6 +2,8 @@
  * Copyright (C) 2017-2021 by Tomasz Bojczuk (seelook@gmail.com)     *
  * on the terms of GNU GPLv3 license (http://www.gnu.org/licenses)   */
 
+pragma ComponentBehavior: Bound
+
 import Nootka 1.0
 import Nootka.Music
 import QtQuick 2.12
@@ -11,6 +13,7 @@ import Score 1.0
 TstaffItem {
     id: staff
 
+    required property var score
     property alias clef: clef
     property real linesCount: score.clef === Tclef.PianoStaffClefs ? 49 : 38
     property var keySignItem: null
@@ -37,7 +40,7 @@ TstaffItem {
                                         Math.max(Screen.height / 4, Screen.pixelDensity * (NOO.isAndroid() ? 50 : 70))) / linesCount) * score.scaleFactor
     width: score.width / scale
     transformOrigin: Item.TopLeft
-    scoreObject: scoreObj
+    scoreObject: score.scoreObj
     notesIndent: firstNoteX
     upperLine: score.clef === Tclef.PianoStaffClefs ? 14 : 16
     Component.onCompleted: checkIsKeyEnabled()
@@ -45,30 +48,30 @@ TstaffItem {
     TstaffLines {
         id: upperStaff
 
-        x: score.clef === Tclef.PianoStaffClefs ? 3 : 0.5
-        width: staff.width - (score.clef === Tclef.PianoStaffClefs ? 3.5 : 1)
-        y: upperLine - 0.1
+        x: staff.score.clef === Tclef.PianoStaffClefs ? 3 : 0.5
+        width: staff.width - (staff.score.clef === Tclef.PianoStaffClefs ? 3.5 : 1)
+        y: staff.upperLine - 0.1
         staffScale: staff.scale
     }
 
     Loader {
-        sourceComponent: score.clef === Tclef.PianoStaffClefs ? lowerStaff : null
+        sourceComponent: staff.score.clef === Tclef.PianoStaffClefs ? lowerStaff : null
     }
 
     Component {
         id: lowerStaff
 
         TstaffLines {
-            x: score.clef === Tclef.PianoStaffClefs ? 3 : 0.5
-            width: staff.width - (score.clef === Tclef.PianoStaffClefs ? 3.5 : 1)
-            y: upperLine - 0.1 + 22
+            x: staff.score.clef === Tclef.PianoStaffClefs ? 3 : 0.5
+            width: staff.width - (staff.score.clef === Tclef.PianoStaffClefs ? 3.5 : 1)
+            y: staff.upperLine - 0.1 + 22
             staffScale: staff.scale
         }
 
     }
 
     Loader {
-        sourceComponent: score.clef === Tclef.PianoStaffClefs ? brace : null
+        sourceComponent: staff.score.clef === Tclef.PianoStaffClefs ? brace : null
     }
 
     Component {
@@ -92,22 +95,25 @@ TstaffItem {
     }
 
     Connections {
-        target: score
-        function onEnableKeySignChanged() : void { checkIsKeyEnabled() }
+        target: staff.score
+        function onEnableKeySignChanged() : void { staff.checkIsKeyEnabled(); }
     }
 
     // measure number
     Text {
-        x: score.clef === Tclef.PianoStaffClefs ? 0.8 : 0.5
-        y: upperLine - (score.clef === Tclef.Treble_G || score.clef === Tclef.Treble_G_8down || score.clef === Tclef.Tenor_C || score.clef === Tclef.PianoStaffClefs ? 8 : 5)
-        text: firstMeasureNr + 1
-        visible: number > 0 && firstMeasureNr > 0
+        x: staff.score.clef === Tclef.PianoStaffClefs ? 0.8 : 0.5
+        y: staff.upperLine
+            - (staff.score.clef === Tclef.Treble_G || score.clef === Tclef.Treble_G_8down
+                || score.clef === Tclef.Tenor_C || score.clef === Tclef.PianoStaffClefs
+                ? 8 : 5)
+        text: staff.firstMeasureNr + 1
+        visible: staff.number > 0 && staff.firstMeasureNr > 0
         scale: 0.4
         transformOrigin: Item.TopLeft
         color: activPal.text
 
         font {
-            pixelSize: score.clef === Tclef.PianoStaffClefs ? 7 : 5
+            pixelSize: staff.score.clef === Tclef.PianoStaffClefs ? 7 : 5
             family: "Scorek"
         }