diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp
index 5242702709a8bebb4822c759082df9d587724280..cc82aac138a54198213a33aa3e8d18254b0d148b 100644
--- a/src/plugins/bineditor/bineditor.cpp
+++ b/src/plugins/bineditor/bineditor.cpp
@@ -1121,10 +1121,19 @@ void BinEditor::zoomOut(int range)
 
 void BinEditor::copy()
 {
-    int selStart = qMin(m_cursorPosition, m_anchorPosition);
-    int selEnd = qMax(m_cursorPosition, m_anchorPosition);
-    if (selStart < selEnd)
-        QApplication::clipboard()->setText(QString::fromLatin1(dataMid(selStart, selEnd - selStart)));
+    const int selStart = selectionStart();
+    const int selEnd = selectionEnd();
+    if (selStart < selEnd) {
+        const QByteArray &data = dataMid(selStart, selEnd - selStart);
+        QString hexString;
+        const char * const hex = "0123456789abcdef";
+        for (int i = 0; i < data.size(); ++i) {
+            const uchar val = static_cast<uchar>(data[i]);
+            hexString.append(hex[val >> 4]).append(hex[val & 0xf]).append(' ');
+        }
+        hexString.chop(1);
+        QApplication::clipboard()->setText(hexString);
+    }
 }
 
 void BinEditor::highlightSearchResults(const QByteArray &pattern, QTextDocument::FindFlags findFlags)