diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index 2e57eafd13d136bbbfd8914c22d7027b5bec1fdc..7d598cc07bb8a71c60eb66092240bdb4802b691f 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -327,7 +327,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool cleanIndentatio
                 cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing);
                 cursor.removeSelectedText();
             }
-            if (cleanIndentation && !m_tabSettings.isIndentationClean(blockText)) {
+            if (cleanIndentation && !m_tabSettings.isIndentationClean(block)) {
                 cursor.setPosition(block.position());
                 int firstNonSpace = m_tabSettings.firstNonSpace(blockText);
                 if (firstNonSpace == blockText.length()) {
diff --git a/src/plugins/texteditor/tabsettings.cpp b/src/plugins/texteditor/tabsettings.cpp
index 10fe3bb49ed9fb9d5beae71783a298e684eab540..efc4052694700d7d9b508e54495761d984726a48 100644
--- a/src/plugins/texteditor/tabsettings.cpp
+++ b/src/plugins/texteditor/tabsettings.cpp
@@ -149,10 +149,12 @@ int TabSettings::trailingWhitespaces(const QString &text) const
     return i;
 }
 
-bool TabSettings::isIndentationClean(const QString &text) const
+bool TabSettings::isIndentationClean(const QTextBlock &block) const
 {
     int i = 0;
     int spaceCount = 0;
+    QString text = block.text();
+    bool spacesForTabs = guessSpacesForTabs(block);
     while (i < text.size()) {
         QChar c = text.at(i);
         if (!c.isSpace())
@@ -160,10 +162,10 @@ bool TabSettings::isIndentationClean(const QString &text) const
 
         if (c == QLatin1Char(' ')) {
             ++spaceCount;
-            if (!m_spacesForTabs && spaceCount == m_tabSize)
+            if (!spacesForTabs && spaceCount == m_tabSize)
                 return false;
         } else if (c == QLatin1Char('\t')) {
-            if (m_spacesForTabs || spaceCount != m_indentSize)
+            if (spacesForTabs || spaceCount != m_indentSize)
                 return false;
             spaceCount = 0;
         }
diff --git a/src/plugins/texteditor/tabsettings.h b/src/plugins/texteditor/tabsettings.h
index d6bd2b0afebd27f12f484ff3333826bf4a96d938..88950bd597c59ed0ede89cd1b0b64e4cb68b5e95 100644
--- a/src/plugins/texteditor/tabsettings.h
+++ b/src/plugins/texteditor/tabsettings.h
@@ -72,7 +72,7 @@ struct TEXTEDITOR_EXPORT TabSettings
     void reindentLine(QTextBlock block, int delta) const;
 
     int trailingWhitespaces(const QString &text) const;
-    bool isIndentationClean(const QString &text) const;
+    bool isIndentationClean(const QTextBlock &block) const;
     bool tabShouldIndent(const QTextDocument *document, QTextCursor cursor, int *suggestedPosition = 0) const;
     bool guessSpacesForTabs(const QTextBlock& block) const;