Index: libs/libmythtv/avformatdecoder.cpp
===================================================================
--- libs/libmythtv/avformatdecoder.cpp	(revision 16380)
+++ libs/libmythtv/avformatdecoder.cpp	(working copy)
@@ -1157,7 +1157,7 @@
             aspect_ratio = 4.0 / 3;
         }
 
-        GetNVP()->SetVideoParams(align_width, align_height, fps,
+        GetNVP()->SetVideoParams(enc->width, enc->height, fps,
                                  keyframedist, aspect_ratio, kScan_Detect, 
                                  dvd_video_codec_changed);
     }
@@ -2340,7 +2340,7 @@
                 uint awidth = width, aheight = height;
                 align_dimensions(context, awidth, aheight);
 
-                GetNVP()->SetVideoParams(awidth, aheight, seqFPS,
+                GetNVP()->SetVideoParams(width, height, seqFPS,
                                          keyframedist, aspect, 
                                          kScan_Detect);
                 
@@ -2420,7 +2420,7 @@
             uint awidth = width, aheight = height;
             align_dimensions(context, awidth, aheight);
 
-            GetNVP()->SetVideoParams(awidth, aheight, seqFPS,
+            GetNVP()->SetVideoParams(width, height, seqFPS,
                                      keyframedist, aspect_ratio,
                                      kScan_Detect);
 
Index: libs/libmythtv/videooutbase.cpp
===================================================================
--- libs/libmythtv/videooutbase.cpp	(revision 16380)
+++ libs/libmythtv/videooutbase.cpp	(working copy)
@@ -375,10 +375,13 @@
     }
 
     display_visible_rect = QRect(0, 0, winw, winh);
+    video_disp_dim       = QSize(width, height);
+    width  = (width  + 15) & (~0xf);
+    height = (height + 15) & (~0xf);
     video_dim            = QSize(width, height);
-    video_rect           = QRect(QPoint(winx, winy), fix_1080i(video_dim));
+    video_rect           = QRect(QPoint(winx, winy), fix_1080i(video_disp_dim));
 
-    db_vdisp_profile->SetInput(video_dim);
+    db_vdisp_profile->SetInput(video_disp_dim);
 
     aspectoverride  = db_aspectoverride;
     adjustfill      = db_adjustfill;
@@ -603,7 +606,9 @@
     (void)myth_codec_id;
     (void)codec_private;
 
-    video_dim = input_size;
+    video_disp_dim = input_size;
+    video_dim = QSize((input_size.width()  + 15) & (~0xf),
+                      (input_size.height() + 15) & (~0xf));
 
     db_vdisp_profile->SetInput(video_dim);
 
@@ -710,8 +715,8 @@
 QRect VideoOutput::GetVisibleOSDBounds(
     float &visible_aspect, float &font_scaling, float themeaspect) const
 {
-    float dv_w = ((float)video_dim.width())  / display_video_rect.width();
-    float dv_h = ((float)video_dim.height()) / display_video_rect.height();
+    float dv_w = ((float)video_disp_dim.width())  / display_video_rect.width();
+    float dv_h = ((float)video_disp_dim.height()) / display_video_rect.height();
 
     uint right_overflow = max((display_video_rect.width()
                                 + display_video_rect.left())
@@ -723,8 +728,10 @@
     // top left and bottom right corners respecting letterboxing
     QPoint tl = QPoint((uint) ceil(max(-display_video_rect.left(),0)*dv_w),
                        (uint) ceil(max(-display_video_rect.top(),0)*dv_h));
-    QPoint br = QPoint((uint) floor(video_dim.width()-(right_overflow*dv_w)),
-                       (uint) floor(video_dim.height()-(lower_overflow*dv_h)));
+    QPoint br = QPoint((uint) floor(video_disp_dim.width()
+                                    -(right_overflow*dv_w)),
+                       (uint) floor(video_disp_dim.height()
+                                    -(lower_overflow*dv_h)));
     // adjust for overscan
     if ((db_scale_vert > 0.0f) || (db_scale_horiz > 0.0f))
     {
@@ -762,7 +769,7 @@
  */
 QRect VideoOutput::GetTotalOSDBounds(void) const
 {
-    return QRect(QPoint(0, 0), video_dim);
+    return QRect(QPoint(0, 0), video_disp_dim);
 }
 
 /** \fn VideoOutput::ApplyManualScaleAndMove(void)
@@ -869,8 +876,8 @@
     if (db_scale_horiz > 0) 
     {
         float tmp = 1.0f - 2.0f * db_scale_horiz;
-        video_rect.moveLeft((int) round(video_dim.width() * db_scale_horiz));
-        video_rect.setWidth((int) round(video_dim.width() * tmp));
+        video_rect.moveLeft((int) round(video_disp_dim.width() * db_scale_horiz));
+        video_rect.setWidth((int) round(video_disp_dim.width() * tmp));
 
         int xoff = db_move.x();
         if (xoff > 0) 
@@ -1102,13 +1109,16 @@
 void VideoOutput::MoveResize(void)
 {
     // Preset all image placement and sizing variables.
-    video_rect         = QRect(QPoint(0, 0), fix_1080i(video_dim));
+    video_rect         = QRect(QPoint(0, 0), fix_1080i(video_disp_dim));
     display_video_rect = display_visible_rect;
 
     // Avoid too small frames for audio only streams (for OSD).
     if ((video_rect.width() <= 0) || (video_rect.height() <= 0))
     {
-        video_dim  = display_visible_rect.size();
+        video_disp_dim = display_visible_rect.size();
+        video_dim = QSize(
+            (display_visible_rect.size().width()  + 15) & (~0xf),
+            (display_visible_rect.size().height() + 15) & (~0xf));
         video_rect = QRect(QPoint(0, 0), video_dim);
     }
 
@@ -1445,8 +1455,8 @@
     }
 
     // adjust for non-square pixels on screen
-    float dispPixelAdj = (GetDisplayAspect() * video_dim.height()) /
-        video_dim.width();
+    float dispPixelAdj = (GetDisplayAspect() * video_disp_dim.height()) /
+        video_disp_dim.width();
 
     // adjust for non-square pixels in video
     float vidPixelAdj  = pipVideoWidth / (pipVideoAspect * pipVideoHeight);
Index: libs/libmythtv/videooutbase.h
===================================================================
--- libs/libmythtv/videooutbase.h	(revision 16380)
+++ libs/libmythtv/videooutbase.h	(working copy)
@@ -273,7 +273,8 @@
     float   display_aspect;   ///< Physical aspect ratio of playback window
 
     // Video dimensions
-    QSize   video_dim;        ///< Pixel dimensions of video
+    QSize   video_dim;        ///< Pixel dimensions of video buffer
+    QSize   video_disp_dim;   ///< Pixel dimensions of video display area
     float   video_aspect;     ///< Physical aspect ratio of video
 
     /// Normally this is the same as videoAspect, but may not be
