diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js
index 5308886f9d54bd72efd9d79c957401e156b3a323..a13e8ee9b1568580dee197206d7fa45c66cbd1ba 100644
--- a/packages/qr-code-scanner/src/qr-code-scanner.js
+++ b/packages/qr-code-scanner/src/qr-code-scanner.js
@@ -164,13 +164,13 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
         }
 
         const that = this;
-        let constraint = null;
+        let constraint = { video:  { deviceId: this._('#videoSource').val }};
 
         if ( (this._('#videoSource').val === 'environment') || (this._('#videoSource').val === 'user') ) {
-            constraint = {facingMode:  {exact: ("environment")}};
+            constraint =  { video: {facingMode:  "environment"}};
         }
 
-        navigator.mediaDevices.getUserMedia({ video:  { deviceId: this._('#videoSource').val, constraint}}).then(function(stream) {
+        navigator.mediaDevices.getUserMedia(constraint).then(function(stream) {
             video.srcObject = stream;
             video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
             video.play();