diff -urN gst-plugins-bad-0.10.21/sys/directdraw/gstdirectdrawsink.c gst-plugins-bad-0.10.21-ddraw-par/sys/directdraw/gstdirectdrawsink.c
--- gst-plugins-bad-0.10.21/sys/directdraw/gstdirectdrawsink.c	2010-10-12 18:17:54.000000000 +0300
+++ gst-plugins-bad-0.10.21-ddraw-par/sys/directdraw/gstdirectdrawsink.c	2011-02-18 17:20:34.640625000 +0200
@@ -44,6 +44,7 @@
 #endif
 
 #include "gstdirectdrawsink.h"
+#include <gst/video/video.h>
 
 GST_DEBUG_CATEGORY_STATIC (directdrawsink_debug);
 #define GST_CAT_DEFAULT directdrawsink_debug
@@ -539,11 +540,17 @@
   GstStructure *structure = NULL;
   gboolean ret;
   const GValue *fps;
+  gint par_n, par_d;
 
   structure = gst_caps_get_structure (caps, 0);
   if (!structure)
     return FALSE;
 
+  if (!gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d)) {
+    par_n = 1;
+    par_d = 1;
+  }
+
   ret = gst_structure_get_int (structure, "width", &ddrawsink->video_width);
   ret &= gst_structure_get_int (structure, "height", &ddrawsink->video_height);
   fps = gst_structure_get_value (structure, "framerate");
@@ -556,7 +563,7 @@
         ("Failed to get caps properties from caps"), (NULL));
     return FALSE;
   }
-  GST_VIDEO_SINK_WIDTH (ddrawsink) = ddrawsink->video_width;
+  GST_VIDEO_SINK_WIDTH (ddrawsink) = ddrawsink->video_width * par_n / par_d;
   GST_VIDEO_SINK_HEIGHT (ddrawsink) = ddrawsink->video_height;
 
   ddrawsink->fps_n = gst_value_get_fraction_numerator (fps);
@@ -575,8 +582,8 @@
   /* if we are rendering to our own window, resize it to video size */
   if (ddrawsink->video_window && ddrawsink->our_video_window) {
     SetWindowPos (ddrawsink->video_window, NULL,
-        0, 0, ddrawsink->video_width + (GetSystemMetrics (SM_CXSIZEFRAME) * 2),
-        ddrawsink->video_height + GetSystemMetrics (SM_CYCAPTION) +
+        0, 0, GST_VIDEO_SINK_WIDTH (ddrawsink) + (GetSystemMetrics (SM_CXSIZEFRAME) * 2),
+        GST_VIDEO_SINK_HEIGHT (ddrawsink) + GetSystemMetrics (SM_CYCAPTION) +
         (GetSystemMetrics (SM_CYSIZEFRAME) * 2), SWP_SHOWWINDOW | SWP_NOMOVE);
   }
 
@@ -908,8 +915,8 @@
     /* center image to dest image keeping aspect ratio */
     src_rect.top = 0;
     src_rect.left = 0;
-    src_rect.bottom = ddrawsink->video_height;
-    src_rect.right = ddrawsink->video_width;
+    src_rect.bottom = GST_VIDEO_SINK_HEIGHT (ddrawsink);
+    src_rect.right = GST_VIDEO_SINK_WIDTH (ddrawsink);
     gst_directdraw_sink_center_rect (ddrawsink, src_rect, destsurf_rect,
         &destsurf_rect);
     gst_directdraw_sink_draw_borders (ddrawsink, destsurf_rect);
