diff --git a/public/css/markdown.css b/public/css/markdown.css
index ffceb0525..6a98212a0 100644
--- a/public/css/markdown.css
+++ b/public/css/markdown.css
@@ -32,7 +32,7 @@
     user-select: none;
 }
 
-.markdown-body pre code .gutter .linenumber {
+.markdown-body pre code .gutter.linenumber {
     text-align: right;
     position: relative;
     display: inline-block;
@@ -46,6 +46,10 @@
     border-right: 3px solid #6ce26c !important;
 }
 
+.markdown-body pre code .gutter.linenumber > span:before {
+    content: attr(data-linenumber);
+}
+
 .markdown-body pre code .code {
     float: left;
     margin: 0 0 0 16px;
diff --git a/public/js/extra.js b/public/js/extra.js
index cb6676bcb..fd150bea1 100644
--- a/public/js/extra.js
+++ b/public/js/extra.js
@@ -413,9 +413,9 @@ function highlightRender(code, lang) {
         var lines = result.value.split('\n');
         var linenumbers = [];
         for (var i = 0; i < lines.length - 1; i++) {
-            linenumbers[i] = "<div class='linenumber'>" + (i + 1) + "</div>";
+            linenumbers[i] = "<span data-linenumber='" + (i + 1) + "'></span>";
         }
-        var linegutter = "<div class='gutter'>" + linenumbers.join('\n') + "</div>";
+        var linegutter = "<div class='gutter linenumber'>" + linenumbers.join('\n') + "</div>";
         result.value = "<div class='wrapper'>" + linegutter + "<div class='code'>" + result.value + "</div></div>";
     }
     return result.value;