diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js
index aaab8084d4..1bc08cbed6 100644
--- a/src/components/structures/LeftPanel.js
+++ b/src/components/structures/LeftPanel.js
@@ -62,7 +62,7 @@ var LeftPanel = React.createClass({
         // audio/video not crap out
         var activeCall = CallHandler.getAnyActiveCall();
         var callForRoom = CallHandler.getCallForRoom(selectedRoomId);
-        var showCall = (activeCall && !callForRoom);
+        var showCall = (activeCall && activeCall.call_state === 'connected' && !callForRoom);
         this.setState({
             showCallElement: showCall
         });
@@ -87,7 +87,6 @@ var LeftPanel = React.createClass({
     render: function() {
         var RoomList = sdk.getComponent('rooms.RoomList');
         var BottomLeftMenu = sdk.getComponent('structures.BottomLeftMenu');
-        var IncomingCallBox = sdk.getComponent('voip.IncomingCallBox');
 
         var collapseButton;
         var classes = "mx_LeftPanel";
@@ -100,7 +99,7 @@ var LeftPanel = React.createClass({
         }
 
         var callPreview;
-        if (this.state.showCallElement) {
+        if (this.state.showCallElement && !this.props.collapsed) {
             var CallView = sdk.getComponent('voip.CallView');
             callPreview = (
                 <CallView
@@ -112,7 +111,6 @@ var LeftPanel = React.createClass({
         return (
             <aside className={classes}>
                 { collapseButton }
-                <IncomingCallBox />
                 { callPreview }
                 <RoomList
                     selectedRoom={this.props.selectedRoom}
diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js
index f7efb4254f..13330ec687 100644
--- a/src/components/structures/RoomSubList.js
+++ b/src/components/structures/RoomSubList.js
@@ -64,7 +64,8 @@ var RoomSubList = React.createClass({
         bottommost: React.PropTypes.bool,
         selectedRoom: React.PropTypes.string.isRequired,
         activityMap: React.PropTypes.object.isRequired,
-        collapsed: React.PropTypes.bool.isRequired
+        collapsed: React.PropTypes.bool.isRequired,
+        incomingCall: React.PropTypes.object,
     },
 
     getInitialState: function() {
@@ -239,7 +240,9 @@ var RoomSubList = React.createClass({
                     selected={ selected }
                     unread={ self.props.activityMap[room.roomId] === 1 }
                     highlight={ self.props.activityMap[room.roomId] === 2 }
-                    isInvite={ self.props.label === 'Invites' } />
+                    isInvite={ self.props.label === 'Invites' }
+                    incomingCall={ self.props.incomingCall && (self.props.incomingCall.roomId === room.roomId) ? self.props.incomingCall : null }
+                     />
             );
         });
     },
diff --git a/src/skins/vector/css/molecules/voip/IncomingCallbox.css b/src/skins/vector/css/molecules/voip/IncomingCallbox.css
index 24b24cc20a..163ec43fcf 100644
--- a/src/skins/vector/css/molecules/voip/IncomingCallbox.css
+++ b/src/skins/vector/css/molecules/voip/IncomingCallbox.css
@@ -19,11 +19,12 @@ limitations under the License.
     border: 1px solid #a4a4a4;
     border-radius: 8px;
     background-color: #fff;
-    position: absolute;
+    position: fixed;
     z-index: 1000;
-    left: 235px;
-    top: 155px;
     padding: 6px;
+    margin-top: -3px;
+    margin-left: -20px;
+    width: 200px;
 }
 
 .mx_IncomingCallBox_chevron {
@@ -39,14 +40,13 @@ limitations under the License.
 }
 
 .mx_IncomingCallBox_buttons {
-    display: table-row;
+    display: flex;
 }
 
 .mx_IncomingCallBox_buttons_cell {
     vertical-align: middle;
-    display: table-cell;
     padding: 6px;
-    width: 50%;
+    flex: 1;
 }
 
 .mx_IncomingCallBox_buttons_decline,
@@ -57,6 +57,7 @@ limitations under the License.
     line-height: 36px;
     border-radius: 36px;
     color: #fff;
+    margin: auto;
 }
 
 .mx_IncomingCallBox_buttons_decline {
diff --git a/vector/index.html b/vector/index.html
index 273cb4394f..f926cea58d 100644
--- a/vector/index.html
+++ b/vector/index.html
@@ -27,6 +27,14 @@
     <meta name="theme-color" content="#ffffff">
   </head>
   <body style="height: 100%;">
+    <section id="matrixchat" style="height: 100%;"></section>
+    <script src="bundle.js"></script>
+    <link rel="stylesheet" href="bundle.css">
+    <img src="img/warning.svg" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
+    <audio id="ringAudio" loop>
+        <source src="media/ring.ogg" type="audio/ogg" />
+        <source src="media/ring.mp3" type="audio/mpeg" />
+    </audio>
     <audio id="ringbackAudio" loop>
         <source src="media/ringback.ogg" type="audio/ogg" />
         <source src="media/ringback.mp3" type="audio/mpeg" />
@@ -39,9 +47,5 @@
         <source src="media/busy.ogg" type="audio/ogg" />
         <source src="media/busy.mp3" type="audio/mpeg" />
     </audio>
-    <section id="matrixchat" style="height: 100%;"></section>
-    <script src="bundle.js"></script>
-    <link rel="stylesheet" href="bundle.css">
-    <img src="img/warning.svg" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
   </body>
 </html>