diff --git a/ChangeLog b/ChangeLog
index a8be4a00e72e94a5aa89500e71993187854a5025..9a0ff9ea7d5ee1f36277760de40d3f9f3f05e238 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@
 	* src/rcfile.c (parse_rcfile): Close an extended syntax again.
 	* src/rcfile.c (parse_rcfile): Rename a variable.
 	* src/rcfile.c (grab_and_store): Fix breakage of r5695.
+	* src/color.c (color_update): Do not dereference symlinks, so that
+	the syntax will be derived from the name given on the command line,
+	not from that of the target file.  This fixes Savannah bug #47307.
 
 2016-02-28  Benno Schulenberg  <bensberg@justemail.net>
 	* src/rcfile.c (parse_header_exp): Don't continue when something is
diff --git a/src/color.c b/src/color.c
index 0e51fb2b24281c9a637f400fd819d69ed5956243..abf6e9f8a6894b73e2de6fe672ca37abedf3551f 100644
--- a/src/color.c
+++ b/src/color.c
@@ -215,7 +215,7 @@ void color_update(void)
 	    /* Concatenate the current working directory with the
 	     * specified filename, and canonicalize the result. */
 	    sprintf(joinednames, "%s/%s", currentdir, openfile->filename);
-	    fullname = realpath(joinednames, NULL);
+	    fullname = get_full_path(joinednames);
 	    free(currentdir);
 	}