diff --git a/src/main/tmainscoreobject.cpp b/src/main/tmainscoreobject.cpp
index 934c7226f96827d276e2545229289b83a58b723a..5a50d0f41d3568572888507eb401cf9ef6fff501 100644
--- a/src/main/tmainscoreobject.cpp
+++ b/src/main/tmainscoreobject.cpp
@@ -73,6 +73,7 @@ TmainScoreObject::TmainScoreObject(QObject* parent) :
 
   m_zoomOutAct = new Taction(tr("Zoom score out"), QStringLiteral("zoom-out"), this);
   m_zoomInAct = new Taction(tr("Zoom score in"), QStringLiteral("zoom-in"), this);
+  m_transposeAct = new Taction(tr("Transpose"), QStringLiteral("transpose"), this);
 
   m_playAct = new Taction(qTR("TtoolBar", "Play"), QStringLiteral("playMelody"), this);
   m_playAct->setBgColor(QColor(0, 255, 0));
@@ -159,7 +160,8 @@ void TmainScoreObject::setScoreObject(TscoreObject* scoreObj) {
   m_scoreObj->clearScoreAct()->setBgColor(QColor(255, 140, 0)); // orange
 #if !defined (Q_OS_ANDROID)
   m_scoreActions.prepend(m_scoreObj->editModeAct());
-  m_scoreActions << m_scoreObj->insertNoteAct() << m_scoreObj->deleteNoteAct() << m_scoreObj->clearScoreAct() << m_notesMenuAct;
+  m_scoreActions << m_scoreObj->insertNoteAct() << m_scoreObj->deleteNoteAct()
+                 << m_scoreObj->clearScoreAct() << m_transposeAct << m_notesMenuAct;
 #else
   m_scoreActions << m_randMelodyAct << m_openXmlAct << m_saveXmlAct;
 #endif
@@ -583,7 +585,8 @@ void TmainScoreObject::isExamChangedSlot() {
   if (m_scoreObj) {
 #if !defined (Q_OS_ANDROID)
     m_scoreActions.prepend(m_scoreObj->editModeAct());
-    m_scoreActions << m_scoreObj->insertNoteAct() << m_scoreObj->deleteNoteAct() << m_scoreObj->clearScoreAct() << m_notesMenuAct;
+    m_scoreActions << m_scoreObj->insertNoteAct() << m_scoreObj->deleteNoteAct()
+                   << m_scoreObj->clearScoreAct() << m_transposeAct << m_notesMenuAct;
 #else
     if (!GLOB->isExam())
       m_scoreActions << m_randMelodyAct << m_openXmlAct << m_saveXmlAct;
diff --git a/src/main/tmainscoreobject.h b/src/main/tmainscoreobject.h
index ff7d9acce5e4b423d874197ba7d4231bde83a106..3733e2da7069b98b9688573636a9a92c16ecb02a 100644
--- a/src/main/tmainscoreobject.h
+++ b/src/main/tmainscoreobject.h
@@ -63,6 +63,7 @@ class TmainScoreObject : public QObject
   Q_PROPERTY(Taction* saveXmlAct READ saveXmlAct)
   Q_PROPERTY(Taction* randMelodyAct READ randMelodyAct)
   Q_PROPERTY(Taction* notesMenuAct READ notesMenuAct)
+  Q_PROPERTY(Taction* transposeAct READ transposeAct)
   Q_PROPERTY(QList<QObject*> melodyActions READ melodyActions NOTIFY melodyActionsChanged)
   Q_PROPERTY(QString keyNameText READ keyNameText NOTIFY keyNameTextChanged)
   Q_PROPERTY(QQuickItem* mainScoreItem READ mainScoreItem WRITE setMainScoreItem)
@@ -86,6 +87,7 @@ public:
 
   Taction* nextNoteAct() { return m_nextNoteAct; }
   Taction* prevNoteAct() { return m_prevNoteAct; }
+  Taction* transposeAct() { return m_transposeAct; }
 
   Taction* playAct() { return m_playAct; }
   Taction* openXmlAct() { return m_openXmlAct; }
@@ -198,6 +200,7 @@ private:
   Taction                   *m_playAct;
   Taction                   *m_showNamesAct, *m_extraAccidsAct;
   Taction                   *m_zoomOutAct, *m_zoomInAct;
+  Taction                   *m_transposeAct;
   Taction                   *m_openXmlAct, *m_saveXmlAct, *m_randMelodyAct;
   Taction                   *m_nextNoteAct, *m_prevNoteAct;
   Taction                   *m_notesMenuAct = nullptr;
diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml
index 58f49e3b1a162795ef45c081d6d2754763b1a133..a5a4e1ce79302ebba8c0202ecb1533129e3dea56 100644
--- a/src/qml/MainScore.qml
+++ b/src/qml/MainScore.qml
@@ -18,6 +18,7 @@ Score {
   property alias extraAccidsAct: mainObj.extraAccidsAct
   property alias zoomInAct: mainObj.zoomInAct
   property alias zoomOutAct: mainObj.zoomOutAct
+  property alias transposeAct: mainObj.transposeAct
   property alias openXmlAct: mainObj.openXmlAct
   property alias saveXmlAct: mainObj.saveXmlAct
   property alias playAct: mainObj.playAct