diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 8477df0..8e2d43e 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -51,7 +51,7 @@
     <integer name="config_key_preview_linger_timeout">70</integer>
     <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
     <integer name="config_gesture_preview_trail_fadeout_start_delay">100</integer>
-    <integer name="config_gesture_preview_trail_fadeout_duration">1000</integer>
+    <integer name="config_gesture_preview_trail_fadeout_duration">800</integer>
     <integer name="config_gesture_preview_trail_update_interval">20</integer>
     <!--
          Configuration for MainKeyboardView
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java b/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java
index 747627b..e814d80 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java
@@ -32,6 +32,7 @@
     private final ResizableIntArray mEventTimes = new ResizableIntArray(DEFAULT_CAPACITY);
     private int mCurrentStrokeId = -1;
     private long mCurrentDownTime;
+    private int mTrailStartIndex;
 
     // Use this value as imaginary zero because x-coordinates may be zero.
     private static final int DOWN_EVENT_MARKER = -128;
@@ -80,7 +81,7 @@
         if (isNewStroke) {
             final int elapsedTime = (int)(downTime - mCurrentDownTime);
             final int[] eventTimes = mEventTimes.getPrimitiveArray();
-            for (int i = 0; i < trailSize; i++) {
+            for (int i = mTrailStartIndex; i < trailSize; i++) {
                 eventTimes[i] -= elapsedTime;
             }
 
@@ -122,13 +123,14 @@
         final int lingeringDuration = mPreviewParams.mFadeoutStartDelay
                 + mPreviewParams.mFadeoutDuration;
         int startIndex;
-        for (startIndex = 0; startIndex < trailSize; startIndex++) {
+        for (startIndex = mTrailStartIndex; startIndex < trailSize; startIndex++) {
             final int elapsedTime = sinceDown - eventTimes[startIndex];
             // Skip too old trail points.
             if (elapsedTime < lingeringDuration) {
                 break;
             }
         }
+        mTrailStartIndex = startIndex;
 
         if (startIndex < trailSize) {
             int lastX = getXCoordValue(xCoords[startIndex]);
@@ -147,15 +149,18 @@
             }
         }
 
-        // TODO: Implement ring buffer to avoid moving points.
-        // Discard faded out points.
         final int newSize = trailSize - startIndex;
-        System.arraycopy(eventTimes, startIndex, eventTimes, 0, newSize);
-        System.arraycopy(xCoords, startIndex, xCoords, 0, newSize);
-        System.arraycopy(yCoords, startIndex, yCoords, 0, newSize);
-        mEventTimes.setLength(newSize);
-        mXCoordinates.setLength(newSize);
-        mYCoordinates.setLength(newSize);
+        if (newSize < startIndex) {
+            mTrailStartIndex = 0;
+            if (newSize > 0) {
+                System.arraycopy(eventTimes, startIndex, eventTimes, 0, newSize);
+                System.arraycopy(xCoords, startIndex, xCoords, 0, newSize);
+                System.arraycopy(yCoords, startIndex, yCoords, 0, newSize);
+            }
+            mEventTimes.setLength(newSize);
+            mXCoordinates.setLength(newSize);
+            mYCoordinates.setLength(newSize);
+        }
         return newSize > 0;
     }
 }
