diff --git a/cmd/chroma/main.go b/cmd/chroma/main.go
index ce71b2102..29b84f81b 100644
--- a/cmd/chroma/main.go
+++ b/cmd/chroma/main.go
@@ -366,11 +366,19 @@ func selexer(path, contents string) (lexer chroma.Lexer, err error) {
 		return lexers.Analyse(contents), nil
 	}
 
-	if lexer := lexers.Get(cli.Lexer); lexer != nil {
-		return lexer, nil
+	if _, err := os.Stat(cli.Lexer); err == nil {
+		cwd, err := os.Getwd()
+		if err != nil {
+			return nil, err
+		}
+		path, err := filepath.Rel(cwd, cli.Lexer)
+		if err != nil {
+			return nil, err
+		}
+		return chroma.NewXMLLexer(os.DirFS("."), path)
 	}
-	lexerPath, err := filepath.Abs(cli.Lexer)
-	return chroma.NewXMLLexer(os.DirFS("/"), lexerPath)
+
+	return lexers.Get(cli.Lexer), nil
 }
 
 func format(ctx *kong.Context, w io.Writer, style *chroma.Style, it chroma.Iterator) {