diff --git a/src/web-chatview/chatview-gnome.css b/src/web-chatview/chatview-gnome.css
index a6d432ea71a6c3cf334f46e17ad942cad55d53c5..45efc76872978485641c0c333be4d1146df85a2a 100644
--- a/src/web-chatview/chatview-gnome.css
+++ b/src/web-chatview/chatview-gnome.css
@@ -88,9 +88,3 @@
 .oneEntry #nav-contactid-bestId {
   display: none;
 }
-
-video {
-    width: 320px;
-    height: 180px;
-    align-items: center;
-}
\ No newline at end of file
diff --git a/src/web-chatview/chatview-windows.css b/src/web-chatview/chatview-windows.css
index 43a28c98d83bd5999bd230c240a54129f45c3e66..f27f2b67e018882d950584180c33656fe20d356d 100644
--- a/src/web-chatview/chatview-windows.css
+++ b/src/web-chatview/chatview-windows.css
@@ -202,9 +202,3 @@ pre {
     border-radius: 16px;
     cursor: auto;
 }
-
-video {
-    width: 320px;
-    height: 180px;
-    align-items: center;
-}
\ No newline at end of file
diff --git a/src/web-chatview/chatview.css b/src/web-chatview/chatview.css
index 4e8d2f36e6ef39c8659fe30832f77fb8608cf8fb..d1965a5b69a6899f050044a3a8ad35831dd5dc15 100644
--- a/src/web-chatview/chatview.css
+++ b/src/web-chatview/chatview.css
@@ -1051,6 +1051,7 @@ pre {
 }
 
 audio {
+    width: 16em;
     align-self: center;
 }
 
@@ -1059,9 +1060,9 @@ audio {
 }
 
 video {
-    width: 320px;
-    height: 180px;
-    align-items: center;
+    width: 16em;
+    height: 9em;
+    align-self: center;
 }
 
 /* classic screens */
diff --git a/src/web-chatview/chatview.html b/src/web-chatview/chatview.html
index 6e4e850676dff388790353debe00a2d748640e76..b44acbd8ab267558137658d55b83fec1e5cf9a96 100644
--- a/src/web-chatview/chatview.html
+++ b/src/web-chatview/chatview.html
@@ -159,7 +159,7 @@
                             id="path3751" />
                         </svg>
                 </div>
-                <div id="videoRecordButton" class="nav-button action-button nav-right" onclick="videoRecord()">
+                <div id="videoRecordButton" class="nav-button action-button" onclick="videoRecord()">
                     <svg class="svgicon"
                         xmlns:dc="http://purl.org/dc/elements/1.1/"
                         xmlns:cc="http://creativecommons.org/ns#"
diff --git a/src/web-chatview/chatview.js b/src/web-chatview/chatview.js
index 72d8a931d8e2812e894f410dcff1b6bc42354b16..c2ca0b6b972de4404dabe550669392269671dca7 100644
--- a/src/web-chatview/chatview.js
+++ b/src/web-chatview/chatview.js
@@ -4,7 +4,7 @@
 // scrollDetectionThresh represents the number of pixels a user can scroll
 // without disabling the automatic go-back-to-bottom when a new message is
 // received
-const scrollDetectionThresh = 200
+const scrollDetectionThresh = 70
 // printHistoryPart loads blocks of messages. Each block contains
 // scrollBuffer messages
 const scrollBuffer = 20
@@ -74,7 +74,7 @@ var canLazyLoad = false
 /* Set the default target to _self and handle with QWebEnginePage::acceptNavigationRequest */
 var linkifyOptions = {}
 if (use_qt) {
-    messageBarInput.onpaste = pasteKeyDetected;
+    messageBarInput.onpaste = pasteKeyDetected
     wrapperOfNavbar.outerHTML = ""
     linkifyOptions = {
         attributes: null,
@@ -326,7 +326,7 @@ function showInvitation(contactAlias, contactId) {
         } else {
             const className = `sender_image_${contactId}`.replace(/@/g, "_").replace(/\./g, "_")
             if (!inviteImage.classList.contains(className)) {
-                inviteImage.classList.add(className);
+                inviteImage.classList.add(className)
             }
             invitationText.innerHTML = "<b>"
                 + i18n.sprintf(i18n.gettext("%s is not in your contacts"), contactAlias)
@@ -601,7 +601,7 @@ function sendMessage() {
 
         sendContainer.innerHTML = ""
         sendContainer.style.display = "none"
-        reduce_send_container();
+        reduce_send_container()
     }
 
     var message = messageBarInput.value
@@ -651,21 +651,19 @@ function selectFileToSend() {
 
 /* exported sendFile */
 function videoRecord() {
+    var rect = videoRecordButton.getBoundingClientRect()
     if (use_qt) {
-        var rect = videoRecordButton.getBoundingClientRect()
         window.jsbridge.openVideoRecorder(rect.left + rect.width / 2, rect.top)
     } else {
-        var rect = videoRecordButton.getBoundingClientRect()
         window.prompt(`VIDEO_RECORD:${rect.left + rect.width / 2}x${rect.top}`)
     }
 }
 
 function audioRecord() {
+    var rect = audioRecordButton.getBoundingClientRect()
     if (use_qt) {
-        var rect = audioRecordButton.getBoundingClientRect()
         window.jsbridge.openAudioRecorder(rect.left + rect.width / 2, rect.top)
     } else {
-        var rect = audioRecordButton.getBoundingClientRect()
         window.prompt(`AUDIO_RECORD:${rect.left + rect.width / 2}x${rect.top}`)
     }
 }
@@ -916,10 +914,10 @@ function fileInteraction(message_id, message_direction) {
     const internal_mes_wrapper = document.createElement("div")
     internal_mes_wrapper.setAttribute("class", "internal_mes_wrapper")
     if(use_qt) {
-        var tbl = buildMsgTable(message_direction);
-        var msg_cell = tbl.querySelector(".msg_cell");
-        msg_cell.appendChild(message_wrapper);
-        internal_mes_wrapper.appendChild(tbl);
+        var tbl = buildMsgTable(message_direction)
+        var msg_cell = tbl.querySelector(".msg_cell")
+        msg_cell.appendChild(message_wrapper)
+        internal_mes_wrapper.appendChild(tbl)
     } else {
         internal_mes_wrapper.appendChild(message_wrapper)
     }
@@ -928,31 +926,31 @@ function fileInteraction(message_id, message_direction) {
 }
 
 function buildMsgTable(message_direction) {
-    var tbl = document.createElement("table");
+    var tbl = document.createElement("table")
 
-    var row0 = document.createElement("tr");
-    var sender_image_cell = document.createElement("td");
+    var row0 = document.createElement("tr")
+    var sender_image_cell = document.createElement("td")
     sender_image_cell.setAttribute("class", "sender_image_cell")
-    var msg_cell = document.createElement("td");
+    var msg_cell = document.createElement("td")
     msg_cell.setAttribute("class", "msg_cell")
 
-    row0.appendChild((message_direction === "in") ? sender_image_cell : msg_cell);
-    row0.appendChild((message_direction === "in") ? msg_cell : sender_image_cell);
+    row0.appendChild((message_direction === "in") ? sender_image_cell : msg_cell)
+    row0.appendChild((message_direction === "in") ? msg_cell : sender_image_cell)
 
-    tbl.appendChild(row0);
+    tbl.appendChild(row0)
 
-    var row1 = document.createElement("tr");
-    var dummy_cell = document.createElement("td");
+    var row1 = document.createElement("tr")
+    var dummy_cell = document.createElement("td")
     dummy_cell.setAttribute("class", "dummy_cell")
-    var timestamp_cell = document.createElement("td");
+    var timestamp_cell = document.createElement("td")
     timestamp_cell.setAttribute("class", "timestamp_cell")
 
-    row1.appendChild((message_direction === "in") ? dummy_cell : timestamp_cell);
-    row1.appendChild((message_direction === "in") ? timestamp_cell : dummy_cell);
+    row1.appendChild((message_direction === "in") ? dummy_cell : timestamp_cell)
+    row1.appendChild((message_direction === "in") ? timestamp_cell : dummy_cell)
 
-    tbl.appendChild(row1);
+    tbl.appendChild(row1)
 
-    return tbl;
+    return tbl
 }
 
 /**
@@ -1030,18 +1028,22 @@ function updateFileInteraction(message_div, message_object, forceTypeToFile = fa
 
     if (isAudio(message_text) && message_delivery_status === "finished" && displayLinksEnabled && !forceTypeToFile) {
         // Replace the old wrapper by the downloaded audio
-        if (use_qt) {
-            var old_wrapper = message_div.querySelector(".message_wrapper")
-        } else {
-            var old_wrapper = message_div.querySelector(".internal_mes_wrapper")
-        }
+        var old_wrapper = message_div.querySelector(".message_wrapper")
         if (old_wrapper) {
             old_wrapper.parentNode.removeChild(old_wrapper)
         }
 
         var errorHandler = function () {
-            var wrapper = message_div.querySelector(".message_type_audio_video_transfer")
-            wrapper.parentNode.classList.remove("no-audio-overlay")
+            var wrapper
+            if (use_qt) {
+                wrapper = message_div.querySelector(".msg_cell")
+            } else {
+                wrapper = message_div.querySelector(".internal_mes_wrapper")
+            }
+            var wrapper_audio_video = message_div.querySelector(".message_type_audio_video_transfer")
+            wrapper_audio_video.parentNode.classList.remove("no-audio-overlay")
+            wrapper_audio_video.parentNode.removeChild(wrapper_audio_video)
+
             var message_wrapper = message_div.querySelector(".message_wrapper")
             if (message_wrapper) {
                 message_wrapper.parentNode.removeChild(message_wrapper)
@@ -1062,44 +1064,48 @@ function updateFileInteraction(message_div, message_object, forceTypeToFile = fa
         new_wrapper.onerror = errorHandler
         new_wrapper.setAttribute("src", "file://" + message_text)
         new_wrapper.setAttribute("controls", "controls")
-        var audio_type = "audio/mpeg"
+        var audio_type = "audio/ogg"
         if (message_text.toLowerCase().match(/\.(ogg)$/)) {
             audio_type = "audio/ogg"
         } else if (message_text.toLowerCase().match(/\.(flac)$/)) {
             audio_type = "audio/flac"
         } else if (message_text.toLowerCase().match(/\.(wav)$/)) {
             audio_type = "audio/wav"
+        } else if (message_text.toLowerCase().match(/\.(mpeg)$/)) {
+            audio_type = "audio/mpeg"
         }
         new_wrapper.setAttribute("type", audio_type)
         new_wrapper.setAttribute("class", "audio")
-        const internal_mes_wrapper = document.createElement("div")
-        internal_mes_wrapper.setAttribute("class", "message_type_audio_video_transfer")
-        internal_mes_wrapper.appendChild(new_wrapper)
+        const audio_video_wrapper = document.createElement("div")
+        audio_video_wrapper.setAttribute("class", "message_type_audio_video_transfer")
+        audio_video_wrapper.appendChild(new_wrapper)
         if (use_qt) {
-            message_div.querySelector(".msg_cell").appendChild(internal_mes_wrapper)
+            message_div.querySelector(".msg_cell").appendChild(audio_video_wrapper)
         } else {
-            message_div.insertBefore(internal_mes_wrapper, message_div.querySelector(".menu_interaction"))
+            message_div.querySelector(".internal_mes_wrapper").insertBefore(audio_video_wrapper, message_div.querySelector(".timestamp"))
         }
-        internal_mes_wrapper.parentNode.classList.add("no-audio-overlay")
-
+        audio_video_wrapper.parentNode.classList.add("no-audio-overlay")
         return
     }
 
     if (isVideo(message_text) && message_delivery_status === "finished" && displayLinksEnabled && !forceTypeToFile) {
         // Replace the old wrapper by the downloaded audio
-        if (use_qt) {
-            var old_wrapper = message_div.querySelector(".message_wrapper")
-        } else {
-            var old_wrapper = message_div.querySelector(".internal_mes_wrapper")
-        }
-
+        var old_wrapper = message_div.querySelector(".message_wrapper")
         if (old_wrapper) {
             old_wrapper.parentNode.removeChild(old_wrapper)
         }
 
         var errorHandler = function () {
-            var wrapper = message_div.querySelector(".message_type_audio_video_transfer")
-                wrapper.parentNode.classList.remove("no-video-overlay")
+            var wrapper
+            if (use_qt) {
+                wrapper = message_div.querySelector(".msg_cell")
+            } else {
+                wrapper = message_div.querySelector(".internal_mes_wrapper")
+            }
+            var wrapper_audio_video = message_div.querySelector(".message_type_audio_video_transfer")
+            wrapper_audio_video.parentNode.classList.remove("no-audio-overlay")
+            wrapper_audio_video.parentNode.removeChild(wrapper_audio_video)
+
             var message_wrapper = message_div.querySelector(".message_wrapper")
             if (message_wrapper) {
                 message_wrapper.parentNode.removeChild(message_wrapper)
@@ -1116,7 +1122,7 @@ function updateFileInteraction(message_div, message_object, forceTypeToFile = fa
             updateFileInteraction(message_div, message_object, true)
         }
 
-        var hideContext = function () {return false;}
+        var hideContext = function () {return false}
         const new_wrapper = document.createElement("video")
         new_wrapper.onerror = errorHandler
         new_wrapper.oncontextmenu = hideContext
@@ -1136,16 +1142,16 @@ function updateFileInteraction(message_div, message_object, forceTypeToFile = fa
         }
         new_wrapper.setAttribute("type", audio_type)
         new_wrapper.setAttribute("class", "video")
-        const internal_mes_wrapper = document.createElement("div")
+        const audio_video_wrapper = document.createElement("div")
 
-        internal_mes_wrapper.setAttribute("class", "message_type_audio_video_transfer")
-        internal_mes_wrapper.appendChild(new_wrapper)
+        audio_video_wrapper.setAttribute("class", "message_type_audio_video_transfer")
+        audio_video_wrapper.appendChild(new_wrapper)
         if (use_qt) {
-            message_div.querySelector(".msg_cell").appendChild(internal_mes_wrapper)
+            message_div.querySelector(".msg_cell").appendChild(audio_video_wrapper)
         } else {
-            message_div.insertBefore(internal_mes_wrapper, message_div.querySelector(".menu_interaction"))
+            message_div.querySelector(".internal_mes_wrapper").insertBefore(audio_video_wrapper, message_div.querySelector(".timestamp"))
         }
-        internal_mes_wrapper.parentNode.classList.add("no-video-overlay")
+        audio_video_wrapper.parentNode.classList.add("no-video-overlay")
         return
     }
 
@@ -1366,10 +1372,10 @@ function textInteraction(message_id, message_direction, htmlText) {
     const internal_mes_wrapper = document.createElement("div")
     internal_mes_wrapper.setAttribute("class", "internal_mes_wrapper")
     if(use_qt) {
-        var tbl = buildMsgTable(message_direction);
-        var msg_cell = tbl.querySelector(".msg_cell");
-        msg_cell.appendChild(message_wrapper);
-        internal_mes_wrapper.appendChild(tbl);
+        var tbl = buildMsgTable(message_direction)
+        var msg_cell = tbl.querySelector(".msg_cell")
+        msg_cell.appendChild(message_wrapper)
+        internal_mes_wrapper.appendChild(tbl)
     } else {
         internal_mes_wrapper.appendChild(message_wrapper)
     }
@@ -1698,11 +1704,11 @@ function addSenderImage(message_div, message_type, message_sender_contact_method
         var sender_image_cell = message_div.querySelector(".sender_image_cell")
         if (sender_image_cell) {
             var message_sender_image = document.createElement("span")
-            var cssSafeStr = message_sender_contact_method.replace(/@/g, "_").replace(/\./g, "_");
+            var cssSafeStr = message_sender_contact_method.replace(/@/g, "_").replace(/\./g, "_")
             message_sender_image.setAttribute("class", `sender_image sender_image_${cssSafeStr}`)
             sender_image_cell.appendChild(message_sender_image)
         } else {
-            console.warn("can't find sender_image_cell");
+            console.warn("can't find sender_image_cell")
         }
     }
 }
@@ -2384,7 +2390,7 @@ function replaceText(text) {
  * @param theme  The dark theme
  */
 function setTheme(theme) {
-    let root = document.documentElement;
+    let root = document.documentElement
     root.setAttribute("style", "\
         --jami-light-blue: rgba(59, 193, 211, 0.3);\
         --jami-dark-blue: #003b4e;\