diff --git a/libhwcomposer/hwc_fbupdate.cpp b/libhwcomposer/hwc_fbupdate.cpp
index f1f81c1..b8e6976 100644
--- a/libhwcomposer/hwc_fbupdate.cpp
+++ b/libhwcomposer/hwc_fbupdate.cpp
@@ -219,17 +219,19 @@
         ov.setTransform(orient, destR);
 
         hwc_rect_t displayFrame = sourceCrop;
-        //For FB left, top will always be 0
-        //That should also be the case if using 2 mixers for single display
-        ovutils::Dim dposL(displayFrame.left,
+        const int halfWidth = (displayFrame.right - displayFrame.left) / 2;
+        const int height = displayFrame.bottom - displayFrame.top;
+
+        ovutils::Dim dposL(MAX_DISPLAY_DIM - halfWidth,
                            displayFrame.top,
-                           (displayFrame.right - displayFrame.left) / 2,
-                           displayFrame.bottom - displayFrame.top);
+                           halfWidth,
+                           height);
         ov.setPosition(dposL, destL);
+
         ovutils::Dim dposR(0,
                            displayFrame.top,
-                           (displayFrame.right - displayFrame.left) / 2,
-                           displayFrame.bottom - displayFrame.top);
+                           halfWidth,
+                           height);
         ov.setPosition(dposR, destR);
 
         ret = true;
diff --git a/liboverlay/overlayMdp.cpp b/liboverlay/overlayMdp.cpp
index ee8bf51..84c0e2c 100644
--- a/liboverlay/overlayMdp.cpp
+++ b/liboverlay/overlayMdp.cpp
@@ -139,6 +139,7 @@
 }
 
 bool MdpCtrl::set() {
+    int mdpVersion = qdutils::MDPVersion::getInstance().getMDPVersion();
     //deferred calcs, so APIs could be called in any order.
     doTransform();
     doDownscale();
@@ -146,8 +147,10 @@
     if(utils::isYuv(whf.format)) {
         normalizeCrop(mOVInfo.src_rect.x, mOVInfo.src_rect.w);
         normalizeCrop(mOVInfo.src_rect.y, mOVInfo.src_rect.h);
-        utils::even_floor(mOVInfo.dst_rect.w);
-        utils::even_floor(mOVInfo.dst_rect.h);
+        if(mdpVersion < qdutils::MDSS_V5) {
+            utils::even_floor(mOVInfo.dst_rect.w);
+            utils::even_floor(mOVInfo.dst_rect.h);
+        }
     }
 
     if(this->ovChanged()) {
