this is what I get, check mercurial version, just in case
I'm thinking perhaps you have an extensions making fancy stuff with blobs, since I can't get what you describe. I just get Binary file doc.pdf has changed
$ hg version
Mercurial Distributed SCM (version 3.9.2)
...
$ mkdir hg-test
$ cd hg-test
$ hg init
$ echo a text line > text.txt
$ hg add text.txt
$ hg commit -m "1st"
$ echo another text line >> text.txt
$ hg commit -m "2nd"
$ hg add doc.pdf
$ hg commit -m "a binary file"
$ hg commit -m "modified the binary file"
$ hg diff --change 3
diff -r 2fd7730bc3bb -r 155aefdccfbe doc.pdf
Binary file doc.pdf has changed
$ hg diff --change 1
diff -r 9e171966ad0d -r 105aa77984c0 text.txt
--- a/text.txt Sat Dec 17 12:18:46 2016 +0100
+++ b/text.txt Sat Dec 17 12:19:28 2016 +0100
@@ -1,1 +1,2 @@
a text line
+another text line
$ hg log -pr0:3
changeset: 0:9e171966ad0d
user: arhak
date: Sat Dec 17 12:18:46 2016 +0100
summary: 1st
diff -r 000000000000 -r 9e171966ad0d text.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/text.txt Sat Dec 17 12:18:46 2016 +0100
@@ -0,0 +1,1 @@
+a text line
changeset: 1:105aa77984c0
user: arhak
date: Sat Dec 17 12:19:28 2016 +0100
summary: 2nd
diff -r 9e171966ad0d -r 105aa77984c0 text.txt
--- a/text.txt Sat Dec 17 12:18:46 2016 +0100
+++ b/text.txt Sat Dec 17 12:19:28 2016 +0100
@@ -1,1 +1,2 @@
a text line
+another text line
changeset: 2:2fd7730bc3bb
user: arhak
date: Sat Dec 17 12:27:38 2016 +0100
summary: a binary file
diff -r 105aa77984c0 -r 2fd7730bc3bb doc.pdf
Binary file doc.pdf has changed
changeset: 3:155aefdccfbe
tag: tip
user: arhak
date: Sat Dec 17 12:28:50 2016 +0100
summary: modified the binary file
diff -r 2fd7730bc3bb -r 155aefdccfbe doc.pdf
Binary file doc.pdf has changed