diff --git a/src/linguist/linguist/mainwindow.cpp b/src/linguist/linguist/mainwindow.cpp
index 9f7109c8545f9e62c7f85c31c44580221f4bb625..355754b212b72c070ca331ff817f04adefb15ef2 100644
--- a/src/linguist/linguist/mainwindow.cpp
+++ b/src/linguist/linguist/mainwindow.cpp
@@ -1933,6 +1933,10 @@ void MainWindow::setupMenuBar()
     connect(m_ui.actionIncreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(increaseFontSize()));
     connect(m_ui.actionDecreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(decreaseFontSize()));
     connect(m_ui.actionResetZoomToDefault, SIGNAL(triggered()), m_messageEditor, SLOT(resetFontSize()));
+    connect(m_ui.actionShowMoreGuesses, SIGNAL(triggered()), m_phraseView, SLOT(moreGuesses()));
+    connect(m_ui.actionShowFewerGuesses, SIGNAL(triggered()), m_phraseView, SLOT(fewerGuesses()));
+    connect(m_phraseView, SIGNAL(showFewerGuessesAvailable(bool)), m_ui.actionShowFewerGuesses, SLOT(setEnabled(bool)));
+    connect(m_ui.actionResetGuessesToDefault, SIGNAL(triggered()), m_phraseView, SLOT(resetNumGuesses()));
     m_ui.menuViewViews->addAction(m_contextDock->toggleViewAction());
     m_ui.menuViewViews->addAction(m_messagesDock->toggleViewAction());
     m_ui.menuViewViews->addAction(m_phrasesDock->toggleViewAction());
@@ -2622,6 +2626,8 @@ void MainWindow::readConfig()
 
     m_messageEditor->setFontSize(
                 config.value(settingPath("Options/EditorFontsize"), font().pointSize()).toReal());
+    m_phraseView->setMaxCandidates(config.value(settingPath("Options/NumberOfGuesses"),
+                                                PhraseView::getDefaultMaxCandidates()).toInt());
 
     recentFiles().readConfig();
 
@@ -2657,6 +2663,7 @@ void MainWindow::writeConfig()
     recentFiles().writeConfig();
 
     config.setValue(settingPath("Options/EditorFontsize"), m_messageEditor->fontSize());
+    config.setValue(settingPath("Options/NumberOfGuesses"), m_phraseView->getMaxCandidates());
 
     config.beginWriteArray(settingPath("OpenedPhraseBooks"),
         m_phraseBooks.size());
diff --git a/src/linguist/linguist/mainwindow.ui b/src/linguist/linguist/mainwindow.ui
index c090159125239a35c1c9934d40712b51eabf0527..6b4922e16aa04923c1d39646e5389dc9d2e837cd 100644
--- a/src/linguist/linguist/mainwindow.ui
+++ b/src/linguist/linguist/mainwindow.ui
@@ -110,6 +110,15 @@
      <addaction name="separator"/>
      <addaction name="actionResetZoomToDefault"/>
     </widget>
+    <widget class="QMenu" name="menuGuesses">
+     <property name="title">
+      <string>Guesses</string>
+     </property>
+     <addaction name="actionShowMoreGuesses"/>
+     <addaction name="actionShowFewerGuesses"/>
+     <addaction name="separator"/>
+     <addaction name="actionResetGuessesToDefault"/>
+    </widget>
     <addaction name="actionResetSorting"/>
     <addaction name="actionDisplayGuesses"/>
     <addaction name="actionStatistics"/>
@@ -117,6 +126,7 @@
     <addaction name="actionVisualizeWhitespace"/>
     <addaction name="separator"/>
     <addaction name="menuZoom"/>
+    <addaction name="menuGuesses"/>
     <addaction name="separator"/>
     <addaction name="menuToolbars"/>
     <addaction name="menuViewViews"/>
@@ -926,6 +936,30 @@
     <string>Ctrl+0</string>
    </property>
   </action>
+  <action name="actionShowMoreGuesses">
+   <property name="text">
+    <string>Show more</string>
+   </property>
+   <property name="shortcut">
+    <string>Alt++</string>
+   </property>
+  </action>
+  <action name="actionShowFewerGuesses">
+   <property name="text">
+    <string>Show fewer</string>
+   </property>
+   <property name="shortcut">
+    <string>Alt+-</string>
+   </property>
+  </action>
+  <action name="actionResetGuessesToDefault">
+   <property name="text">
+    <string>Reset to default</string>
+   </property>
+   <property name="shortcut">
+    <string>Alt+0</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections/>
diff --git a/src/linguist/linguist/phraseview.cpp b/src/linguist/linguist/phraseview.cpp
index e1d31954ebbd6a9134b35e379c318ec4001fba5e..39b02c8cd5de69acca51770cebe1608300aa2faa 100644
--- a/src/linguist/linguist/phraseview.cpp
+++ b/src/linguist/linguist/phraseview.cpp
@@ -44,9 +44,6 @@
 
 QT_BEGIN_NAMESPACE
 
-// Maximum number of guesses to display
-static const int MaxCandidates = 5;
-
 static QString phraseViewHeaderKey()
 {
     return settingPath("PhraseViewHeader");
@@ -154,6 +151,30 @@ void PhraseView::editPhrase()
     edit(currentIndex());
 }
 
+void PhraseView::setMaxCandidates(const int max)
+{
+    m_maxCandidates = max;
+    emit showFewerGuessesAvailable(m_maxCandidates > DefaultMaxCandidates);
+}
+
+void PhraseView::moreGuesses()
+{
+    setMaxCandidates(m_maxCandidates + DefaultMaxCandidates);
+    setSourceText(m_modelIndex, m_sourceText);
+}
+
+void PhraseView::fewerGuesses()
+{
+    setMaxCandidates(m_maxCandidates - DefaultMaxCandidates);
+    setSourceText(m_modelIndex, m_sourceText);
+}
+
+void PhraseView::resetNumGuesses()
+{
+    setMaxCandidates(DefaultMaxCandidates);
+    setSourceText(m_modelIndex, m_sourceText);
+}
+
 static CandidateList similarTextHeuristicCandidates(MultiDataModel *model, int mi,
     const char *text, int maxCandidates)
 {
@@ -217,7 +238,7 @@ void PhraseView::setSourceText(int model, const QString &sourceText)
 
     if (!sourceText.isEmpty() && m_doGuesses) {
         CandidateList cl = similarTextHeuristicCandidates(m_dataModel, model,
-            sourceText.toLatin1(), MaxCandidates);
+            sourceText.toLatin1(), m_maxCandidates);
         int n = 0;
         foreach (const Candidate &candidate, cl) {
             QString def;
diff --git a/src/linguist/linguist/phraseview.h b/src/linguist/linguist/phraseview.h
index 2e315b7599bd2e06453f19233e0b9e6d537f1d76..fbc4610fe04ee1802554e3f0bd6e15e6e2f62892 100644
--- a/src/linguist/linguist/phraseview.h
+++ b/src/linguist/linguist/phraseview.h
@@ -36,6 +36,8 @@
 
 QT_BEGIN_NAMESPACE
 
+static const int DefaultMaxCandidates = 5;
+
 class MultiDataModel;
 class PhraseModel;
 
@@ -73,9 +75,13 @@ public:
 public slots:
     void toggleGuessing();
     void update();
+    int getMaxCandidates() const { return m_maxCandidates; }
+    void setMaxCandidates(const int max);
+    static int getDefaultMaxCandidates() { return DefaultMaxCandidates; }
 
 signals:
     void phraseSelected(int latestModel, const QString &phrase);
+    void showFewerGuessesAvailable(bool canShow);
 
 protected:
     // QObject
@@ -88,6 +94,9 @@ private slots:
     void selectPhrase(const QModelIndex &index);
     void selectPhrase();
     void editPhrase();
+    void moreGuesses();
+    void fewerGuesses();
+    void resetNumGuesses();
 
 private:
     QList<Phrase *> getPhrases(int model, const QString &sourceText);
@@ -100,6 +109,7 @@ private:
     QString m_sourceText;
     int m_modelIndex;
     bool m_doGuesses;
+    int m_maxCandidates = DefaultMaxCandidates;
 };
 
 QT_END_NAMESPACE