diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 58f4eb9..1670844 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1011,7 +1011,6 @@
                 false /* isPrediction */);
         // When in fullscreen mode, show completions generated by the application
         setSuggestedWords(suggestedWords);
-        setAutoCorrectionIndicator(false);
         setSuggestionStripShown(true);
         if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
             ResearchLogger.latinIME_onDisplayCompletions(applicationSpecifiedCompletions);
@@ -1336,6 +1335,7 @@
             mSuggestionStripView.setSuggestions(words);
             mKeyboardSwitcher.onAutoCorrectionStateChanged(words.mWillAutoCorrect);
         }
+        setAutoCorrectionIndicator(words.mWillAutoCorrect);
     }
 
     private void setAutoCorrectionIndicator(final boolean newAutoCorrectionIndicator) {
@@ -1440,7 +1440,6 @@
             mInputLogic.mWordComposer.setAutoCorrection(autoCorrection);
         }
         setSuggestedWords(suggestedWords);
-        setAutoCorrectionIndicator(suggestedWords.mWillAutoCorrect);
         setSuggestionStripShown(isSuggestionsStripVisible());
         // Cache the auto-correction in accessibility code so we can speak it if the user
         // touches a key that will insert it.
@@ -1558,7 +1557,6 @@
         } else {
             setSuggestedWords(currentSettings.mSpacingAndPunctuations.mSuggestPuncList);
         }
-        setAutoCorrectionIndicator(false);
         setSuggestionStripShown(isSuggestionsStripVisible());
     }
 
