diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 5d5b6795a7e79de4022af6f2bb1fe843cc4e67f3..2fa5ed2ed7ef4e377fff919f519cf68d0eded9d9 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -65,6 +65,7 @@
 #include <QDir>
 #include <QApplication>
 #include <utils/runextensions.h>
+#include <utils/textfileformat.h>
 
 #include <functional>
 
@@ -77,11 +78,16 @@ static QString getSource(const QString &fileName,
     if (workingCopy.contains(fileName)) {
         return workingCopy.source(fileName);
     } else {
-        Utils::FileReader reader;
-        if (!reader.fetch(fileName, QFile::Text)) // ### FIXME error reporting
-            return QString();
-
-        return QString::fromLocal8Bit(reader.data()); // ### FIXME encoding
+        QString fileContents;
+        Utils::TextFileFormat format;
+        QString error;
+        QTextCodec *defaultCodec = Core::EditorManager::instance()->defaultTextCodec();
+        Utils::TextFileFormat::ReadResult result = Utils::TextFileFormat::readFile(
+                    fileName, defaultCodec, &fileContents, &format, &error);
+        if (result != Utils::TextFileFormat::ReadSuccess)
+            qWarning() << "Could not read " << fileName << ". Error: " << error;
+
+        return fileContents;
     }
 }