diff --git a/resources/qml/ForwardCompleter.qml b/resources/qml/ForwardCompleter.qml
index 26752f92c9bdc60fde1212cd1ececc956174dd27..fdfcec6f390387a9652d3d4b16f76750278c72ae 100644
--- a/resources/qml/ForwardCompleter.qml
+++ b/resources/qml/ForwardCompleter.qml
@@ -80,15 +80,16 @@ Popup {
                 completerPopup.completer.searchString = text;
             }
             Keys.onPressed: {
-                if (event.key == Qt.Key_Up && completerPopup.opened) {
+                if ((event.key == Qt.Key_Up || event.key == Qt.Key_Backtab) && completerPopup.opened) {
                     event.accepted = true;
                     completerPopup.up();
-                } else if (event.key == Qt.Key_Down && completerPopup.opened) {
+                } else if ((event.key == Qt.Key_Down || event.key == Qt.Key_Tab) && completerPopup.opened) {
                     event.accepted = true;
-                    completerPopup.down();
-                } else if (event.key == Qt.Key_Tab && completerPopup.opened) {
-                    event.accepted = true;
-                    completerPopup.down();
+                    if (event.key == Qt.Key_Tab && (event.modifiers & Qt.ShiftModifier)) {
+                        completerPopup.up();
+                    } else {
+                        completerPopup.down();
+                    }
                 } else if (event.matches(StandardKey.InsertParagraphSeparator)) {
                     completerPopup.finishCompletion();
                     event.accepted = true;
diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index 7599036ecba3c6b86ec65272f55cdc0ca91cbd71..36d8fbce6826912695050ce81065d8d36f8810fb 100644
--- a/resources/qml/MessageInput.qml
+++ b/resources/qml/MessageInput.qml
@@ -195,7 +195,11 @@ Rectangle {
                     } else if (event.key == Qt.Key_Tab) {
                         event.accepted = true;
                         if (popup.opened) {
-                            popup.up();
+                            if (event.modifiers & Qt.ShiftModifier) {
+                                popup.down();
+                            } else {
+                                popup.up();
+                            }
                         } else {
                             var pos = cursorPosition - 1;
                             while (pos > -1) {
@@ -219,7 +223,7 @@ Rectangle {
                     } else if (event.key == Qt.Key_Up && popup.opened) {
                         event.accepted = true;
                         popup.up();
-                    } else if (event.key == Qt.Key_Down && popup.opened) {
+                    } else if ((event.key == Qt.Key_Down || event.key == Qt.Key_Backtab) && popup.opened) {
                         event.accepted = true;
                         popup.down();
                     } else if (event.key == Qt.Key_Up && event.modifiers == Qt.NoModifier) {
diff --git a/resources/qml/QuickSwitcher.qml b/resources/qml/QuickSwitcher.qml
index defcc611ecc38f1debb86e6f6543dec5ca33d8aa..fe1936afb29cbe3318eea268622a1cbffd81881f 100644
--- a/resources/qml/QuickSwitcher.qml
+++ b/resources/qml/QuickSwitcher.qml
@@ -39,15 +39,16 @@ Popup {
             completerPopup.completer.searchString = text;
         }
         Keys.onPressed: {
-            if (event.key == Qt.Key_Up && completerPopup.opened) {
+            if ((event.key == Qt.Key_Up || event.key == Qt.Key_Backtab) && completerPopup.opened) {
                 event.accepted = true;
                 completerPopup.up();
-            } else if (event.key == Qt.Key_Down && completerPopup.opened) {
+            } else if ((event.key == Qt.Key_Down || event.key == Qt.Key_Tab) && completerPopup.opened) {
                 event.accepted = true;
-                completerPopup.down();
-            } else if (event.key == Qt.Key_Tab && completerPopup.opened) {
-                event.accepted = true;
-                completerPopup.down();
+                if (event.key == Qt.Key_Tab && (event.modifiers & Qt.ShiftModifier)) {
+                    completerPopup.up();
+                } else {
+                    completerPopup.down();
+                }
             } else if (event.matches(StandardKey.InsertParagraphSeparator)) {
                 completerPopup.finishCompletion();
                 event.accepted = true;