diff --git a/osbase/logtree/journal.go b/osbase/logtree/journal.go
index 55977bf..c6cc503 100644
--- a/osbase/logtree/journal.go
+++ b/osbase/logtree/journal.go
@@ -5,6 +5,7 @@
 
 import (
 	"errors"
+	"sort"
 	"strings"
 	"sync"
 
@@ -196,6 +197,10 @@
 		cur = cur.prevGlobal
 	}
 
+	// Reverse entries back into chronological order.
+	sort.SliceStable(res, func(i, j int) bool {
+		return i > j
+	})
 	return
 }
 
@@ -228,6 +233,10 @@
 		cur = cur.prevLocal
 	}
 
+	// Reverse entries back into chronological order.
+	sort.SliceStable(res, func(i, j int) bool {
+		return i > j
+	})
 	return
 }
 
diff --git a/osbase/logtree/journal_test.go b/osbase/logtree/journal_test.go
index 944e4fb..826f2e7 100644
--- a/osbase/logtree/journal_test.go
+++ b/osbase/logtree/journal_test.go
@@ -38,7 +38,7 @@
 		t.Fatalf("wanted %d entries, got %d", want, got)
 	}
 	for i, entry := range entries {
-		want := fmt.Sprintf("test %d", 9000-1-i)
+		want := fmt.Sprintf("test %d", (9000-defaultDNQuota)+i)
 		got := strings.Join(entry.leveled.messages, "\n")
 		if want != got {
 			t.Fatalf("wanted entry %q, got %q", want, got)
diff --git a/osbase/logtree/logtree_access.go b/osbase/logtree/logtree_access.go
index 6c42452..1582a8f 100644
--- a/osbase/logtree/logtree_access.go
+++ b/osbase/logtree/logtree_access.go
@@ -5,19 +5,11 @@
 
 import (
 	"errors"
-	"slices"
 	"sync/atomic"
 
 	"source.monogon.dev/go/logging"
 )
 
-type BacklogOrder int
-
-const (
-	BacklogOrderLatestFirst BacklogOrder = iota
-	BacklogOrderOldestFirst
-)
-
 // LogReadOption describes options for the LogTree.Read call.
 type LogReadOption func(*logReaderOptions)
 
@@ -25,7 +17,6 @@
 	withChildren               bool
 	withStream                 bool
 	withBacklog                int
-	withBacklogOrder           BacklogOrder
 	onlyLeveled                bool
 	onlyRaw                    bool
 	leveledWithMinimumSeverity logging.Severity
@@ -63,12 +54,6 @@
 	return func(lro *logReaderOptions) { lro.withBacklog = count }
 }
 
-// WithBacklogOrder makes Read return log entries in the given order,
-// default being latest messages first.
-func WithBacklogOrder(order BacklogOrder) LogReadOption {
-	return func(lro *logReaderOptions) { lro.withBacklogOrder = order }
-}
-
 // BacklogAllAvailable makes WithBacklog return all backlogged log data that
 // logtree possesses.
 const BacklogAllAvailable int = -1
@@ -171,11 +156,6 @@
 		}
 	}
 
-	if lro.withBacklogOrder == BacklogOrderLatestFirst {
-		// Reverse entries back into chronological order.
-		slices.Reverse(entries)
-	}
-
 	lr := &LogReader{}
 	if lro.withStream {
 		sub := &subscriber{
