diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index d94bfa27e4a305045e1d6304e629df933d727ba8..099eb5f4753befc80b90feae5a2a9df17e1aaa62 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -580,7 +580,7 @@ func (d *Downloader) fetchHeight(p *peerConnection) (*types.Header, error) {
 				return nil, errBadPeer
 			}
 			head := headers[0]
-			if d.mode == FastSync && head.Number.Uint64() < d.checkpoint {
+			if (d.mode == FastSync || d.mode == LightSync) && head.Number.Uint64() < d.checkpoint {
 				p.log.Warn("Remote head below checkpoint", "number", head.Number, "hash", head.Hash())
 				return nil, errUnsyncedPeer
 			}
diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go
index f8c6b25851ef4ca15f8316e058a63e610c44712c..ec45eb06dd5459883867e6d7d1bb0f41fc055685 100644
--- a/eth/downloader/downloader_test.go
+++ b/eth/downloader/downloader_test.go
@@ -1594,13 +1594,13 @@ func testCheckpointEnforcement(t *testing.T, protocol int, mode SyncMode) {
 	tester.newPeer("peer", protocol, chain)
 
 	var expect error
-	if mode == FastSync {
+	if mode == FastSync || mode == LightSync {
 		expect = errUnsyncedPeer
 	}
 	if err := tester.sync("peer", nil, mode); err != expect {
 		t.Fatalf("block sync error mismatch: have %v, want %v", err, expect)
 	}
-	if mode == FastSync {
+	if mode == FastSync || mode == LightSync {
 		assertOwnChain(t, tester, 1)
 	} else {
 		assertOwnChain(t, tester, chain.len())