diff --git a/src/fe-text/textbuffer.c b/src/fe-text/textbuffer.c
index 3668f4c7..1f587f97 100644
--- a/src/fe-text/textbuffer.c
+++ b/src/fe-text/textbuffer.c
@@ -610,27 +610,30 @@ GList *textbuffer_find_text(TEXT_BUFFER_REC *buffer, LINE_REC *startline,
 			pre_line = line;
 			for (i = 0; i < before; i++) {
 				if (pre_line->prev == NULL ||
-				    g_list_find(matches, pre_line->prev) != NULL)
+				    g_list_nth_data(matches, 0) == pre_line->prev ||
+				    g_list_nth_data(matches, 1) == pre_line->prev)
 					break;
                                 pre_line = pre_line->prev;
 			}
 
 			for (; pre_line != line; pre_line = pre_line->next)
-				matches = g_list_append(matches, pre_line);
+				matches = g_list_prepend(matches, pre_line);
 
 			match_after = after;
 		}
 
 		if (line_matched || match_after > 0) {
 			/* matched */
-			matches = g_list_append(matches, line);
+			matches = g_list_prepend(matches, line);
 
 			if ((!line_matched && --match_after == 0) ||
 			    (line_matched && match_after == 0 && before > 0))
-				matches = g_list_append(matches, NULL);
+				matches = g_list_prepend(matches, NULL);
 		}
 	}
 
+	matches = g_list_reverse(matches);
+
 #ifdef USE_GREGEX
 	if (preg != NULL)
 		g_regex_unref(preg);