diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index a68e20a..2217dd2 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -979,7 +979,9 @@
                     .setTypedWordValid(false)
                     .setHasMinimalSuggestion(false);
             // When in fullscreen mode, show completions generated by the application
-            setSuggestions(builder.build());
+            final SuggestedWords words = builder.build();
+            setSuggestions(words);
+            setAutoCorrectionIndicator(words);
             // TODO: is this the right thing to do? What should we auto-correct to in
             // this case? This says to keep whatever the user typed.
             mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
@@ -1713,6 +1715,7 @@
 
     public void clearSuggestions() {
         setSuggestions(SuggestedWords.EMPTY);
+        setAutoCorrectionIndicator(SuggestedWords.EMPTY);
     }
 
     public void setSuggestions(final SuggestedWords words) {
@@ -1721,7 +1724,6 @@
             mKeyboardSwitcher.onAutoCorrectionStateChanged(
                     words.hasWordAboveAutoCorrectionScoreThreshold());
         }
-        setAutoCorrectionIndicator(words);
     }
 
     private void setAutoCorrectionIndicator(final SuggestedWords words) {
@@ -1851,6 +1853,7 @@
         }
         mWordComposer.setAutoCorrection(autoCorrection);
         setSuggestions(suggestedWords);
+        setAutoCorrectionIndicator(suggestedWords);
         setSuggestionStripShown(isSuggestionsStripVisible());
     }
 
@@ -2024,6 +2027,7 @@
 
     public void setPunctuationSuggestions() {
         setSuggestions(mSettingsValues.mSuggestPuncList);
+        setAutoCorrectionIndicator(mSettingsValues.mSuggestPuncList);
         setSuggestionStripShown(isSuggestionsStripVisible());
     }
 
