diff -wurB 1_MPlayer-20050123-orig/libmpcodecs/vf_expand.c MPlayer-20050123/libmpcodecs/vf_expand.c
--- 1_MPlayer-20050123-orig/libmpcodecs/vf_expand.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libmpcodecs/vf_expand.c	2005-01-24 00:01:45.000000000 +0100
@@ -144,10 +144,10 @@
 	    remove_func(0,0,vf->priv->exp_w,vf->priv->exp_h);
 	} else {
 	    // partial clear:
-	    vo_remove_text(vf->priv->exp_w,vf->priv->exp_h,remove_func);
+	    vo_remove_text_noaspect(vf->priv->exp_w,vf->priv->exp_h,remove_func);
 	}
     }
-    vo_draw_text(vf->priv->exp_w,vf->priv->exp_h,draw_func);
+    vo_draw_text_noaspect(vf->priv->exp_w,vf->priv->exp_h,draw_func);
     // save buffer pointer for double buffering detection - yes, i know it's
     // ugly method, but note that codecs with DR support does the same...
     if(vf->dmpi)
@@ -195,7 +195,7 @@
 #ifdef OSD_SUPPORT
     if(vf->priv->osd && (mpi->flags&MP_IMGFLAG_PRESERVE)){
 	// check if we have to render osd!
-	vo_update_osd(vf->priv->exp_w, vf->priv->exp_h);
+	vo_update_osd_noaspect(vf->priv->exp_w, vf->priv->exp_h);
 	if(vo_osd_check_range_update(vf->priv->exp_x,vf->priv->exp_y,
 	    vf->priv->exp_x+mpi->w,vf->priv->exp_y+mpi->h)) return;
     }
diff -wurB 1_MPlayer-20050123-orig/libvo/mga_common.c MPlayer-20050123/libvo/mga_common.c
--- 1_MPlayer-20050123-orig/libvo/mga_common.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/mga_common.c	2005-01-24 00:00:42.000000000 +0100
@@ -47,8 +47,8 @@
 
 static void draw_osd(void)
 {
-//    vo_draw_text(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha);
-    vo_draw_text(mga_vid_config.src_width-mga_vid_config.src_width*vo_panscan_x/(vo_dwidth+vo_panscan_x),mga_vid_config.src_height,draw_alpha);
+//    vo_draw_text_noaspect(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha);
+    vo_draw_text_noaspect(mga_vid_config.src_width-mga_vid_config.src_width*vo_panscan_x/(vo_dwidth+vo_panscan_x),mga_vid_config.src_height,draw_alpha);
 }
 
 
diff -wurB 1_MPlayer-20050123-orig/libvo/sub.c MPlayer-20050123/libvo/sub.c
--- 1_MPlayer-20050123-orig/libvo/sub.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/sub.c	2005-01-24 03:19:42.000000000 +0100
@@ -758,7 +758,7 @@
     vo_osd_list=NULL;
 }
 
-int vo_update_osd(int dxs,int dys){
+int vo_update_osd(int dxs,int dys,float dasp){
     mp_osd_obj_t* obj=vo_osd_list;
     int chg=0;
 
@@ -771,7 +771,7 @@
 #endif
 
     while(obj){
-      if(dxs!=obj->dxs || dys!=obj->dys || obj->flags&OSDFLAG_FORCE_UPDATE){
+      if(dxs!=obj->dxs || dys!=obj->dys || dasp!=obj->dasp || obj->flags&OSDFLAG_FORCE_UPDATE){
         int vis=obj->flags&OSDFLAG_VISIBLE;
 	obj->flags&=~OSDFLAG_BBOX;
 	switch(obj->type){
@@ -819,7 +819,7 @@
 	// check if visibility changed:
 	if(vis != (obj->flags&OSDFLAG_VISIBLE) ) obj->flags|=OSDFLAG_CHANGED;
 	// remove the cause of automatic update:
-	obj->dxs=dxs; obj->dys=dys;
+	obj->dxs=dxs; obj->dys=dys; obj->dasp=dasp;
 	obj->flags&=~OSDFLAG_FORCE_UPDATE;
       }
       if(obj->flags&OSDFLAG_CHANGED){
@@ -849,9 +849,9 @@
 
 int vo_osd_changed_flag=0;
 
-void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h)){
+void vo_remove_text(int dxs,int dys,float dasp,void (*remove)(int x0,int y0, int w,int h)){
     mp_osd_obj_t* obj=vo_osd_list;
-    vo_update_osd(dxs,dys);
+    vo_update_osd(dxs,dys,dasp);
     while(obj){
       if(((obj->flags&OSDFLAG_CHANGED) || (obj->flags&OSDFLAG_VISIBLE)) && 
          (obj->flags&OSDFLAG_OLD_BBOX)){
@@ -867,9 +867,9 @@
     }
 }
 
-void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
+void vo_draw_text(int dxs,int dys,float dasp,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
     mp_osd_obj_t* obj=vo_osd_list;
-    vo_update_osd(dxs,dys);
+    vo_update_osd(dxs,dys,dasp);
     while(obj){
       if(obj->flags&OSDFLAG_VISIBLE){
 	vo_osd_changed_flag=obj->flags&OSDFLAG_CHANGED;	// temp hack
diff -wurB 1_MPlayer-20050123-orig/libvo/sub.h MPlayer-20050123/libvo/sub.h
--- 1_MPlayer-20050123-orig/libvo/sub.h	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/sub.h	2005-01-24 03:17:54.000000000 +0100
@@ -27,6 +27,7 @@
     unsigned short flags;
     int x,y;
     int dxs,dys;
+    float dasp;
     mp_osd_bbox_t bbox; // bounding box
     mp_osd_bbox_t old_bbox; // the renderer will save bbox here
     union {
@@ -51,7 +52,7 @@
 #if 0
 
 // disable subtitles:
-static inline void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
+static inline void vo_draw_text_osd(int dxs,int dys,float dasp,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
 }
 
 #else
@@ -110,15 +111,19 @@
 //extern void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
 //extern void vo_draw_text_progbar(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
 //extern void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
-extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
-extern void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h));
+extern void vo_draw_text(int dxs,int dys,float dasp,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
+extern void vo_remove_text(int dxs,int dys,float dasp,void (*remove)(int x0,int y0, int w,int h));
 
 void vo_init_osd();
-int vo_update_osd(int dxs,int dys);
+int vo_update_osd(int dxs,int dys,float dasp);
 int vo_osd_changed(int new_value);
 int vo_osd_check_range_update(int,int,int,int);
 
 extern int vo_osd_changed_flag;
 
+#define vo_draw_text_noaspect(dxs,dys,draw_alpha) vo_draw_text(dxs,dys,0,draw_alpha)
+#define vo_remove_text_noaspect(dxs,dys,remove) vo_remove_text(dxs,dys,0,remove)
+#define vo_update_osd_noaspect(dxs,dys) vo_update_osd(dxs,dys,0)
+
 #endif
 #endif
diff -wurB 1_MPlayer-20050123-orig/libvo/vesa_lvo.c MPlayer-20050123/libvo/vesa_lvo.c
--- 1_MPlayer-20050123-orig/libvo/vesa_lvo.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vesa_lvo.c	2005-01-24 00:00:43.000000000 +0100
@@ -282,7 +282,7 @@
 /* disable this stuff until new fbvid.h interface will be implemented
   because in different fourcc radeon_vid and rage128_vid have different
   width alignment */
-  vo_draw_text(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha);
+  vo_draw_text_noaspect(mga_vid_config.src_width,mga_vid_config.src_height,draw_alpha);
 #endif
 }
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_aa.c MPlayer-20050123/libvo/vo_aa.c
--- 1_MPlayer-20050123-orig/libvo/vo_aa.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_aa.c	2005-01-24 00:01:32.000000000 +0100
@@ -566,8 +566,8 @@
     vo_osd_text=NULL;
     vo_osd_progbar_type_save=vo_osd_progbar_type;
     vo_osd_progbar_type=-1;
-    vo_remove_text(aa_scrwidth(c), aa_scrheight(c),clear_alpha);
-    vo_draw_text(aa_scrwidth(c), aa_scrheight(c), draw_alpha);
+    vo_remove_text_noaspect(aa_scrwidth(c), aa_scrheight(c),clear_alpha);
+    vo_draw_text_noaspect(aa_scrwidth(c), aa_scrheight(c), draw_alpha);
     vo_osd_text=vo_osd_text_save;
     vo_osd_progbar_type=vo_osd_progbar_type_save;
 #endif
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_dfbmga.c MPlayer-20050123/libvo/vo_dfbmga.c
--- 1_MPlayer-20050123-orig/libvo/vo_dfbmga.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_dfbmga.c	2005-01-24 00:01:32.000000000 +0100
@@ -1072,8 +1072,8 @@
           blit_to_screen();
           blit_done = 1;
 
-     vo_remove_text( sub_width, sub_height, clear_alpha );
-     vo_draw_text( sub_width, sub_height, draw_alpha );
+     vo_remove_text_noaspect( sub_width, sub_height, clear_alpha );
+     vo_draw_text_noaspect( sub_width, sub_height, draw_alpha );
 
      if (use_spic && flipping && osd_changed) {
           subframe->Flip( subframe, NULL, 0 );
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_dga.c MPlayer-20050123/libvo/vo_dga.c
--- 1_MPlayer-20050123-orig/libvo/vo_dga.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_dga.c	2005-01-24 00:00:43.000000000 +0100
@@ -327,7 +327,7 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(vo_dga_src_width, vo_dga_src_height, draw_alpha);
+    vo_draw_text_noaspect(vo_dga_src_width, vo_dga_src_height, draw_alpha);
 }
 
 static void switch_video_buffers(void)
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_directfb2.c MPlayer-20050123/libvo/vo_directfb2.c
--- 1_MPlayer-20050123-orig/libvo/vo_directfb2.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_directfb2.c	2005-01-24 00:00:43.000000000 +0100
@@ -1555,5 +1555,5 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(width,height,draw_alpha);
+    vo_draw_text_noaspect(width,height,draw_alpha);
 }
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_directx.c MPlayer-20050123/libvo/vo_directx.c
--- 1_MPlayer-20050123-orig/libvo/vo_directx.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_directx.c	2005-01-24 00:00:44.000000000 +0100
@@ -73,7 +73,7 @@
 static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL;
 
 extern void mplayer_put_key(int code);              //let mplayer handel the keyevents 
-extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
+extern void vo_draw_text_noaspect(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
 extern int vo_doublebuffering;                      //tribblebuffering    
 extern int vo_fs;
 extern int vo_directrendering;
@@ -175,7 +175,7 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(image_width,image_height,draw_alpha);
+    vo_draw_text_noaspect(image_width,image_height,draw_alpha);
 }
 
 static uint32_t
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_dxr2.c MPlayer-20050123/libvo/vo_dxr2.c
--- 1_MPlayer-20050123-orig/libvo/vo_dxr2.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_dxr2.c	2005-01-24 00:01:32.000000000 +0100
@@ -874,7 +874,7 @@
 static void draw_osd(void)
 {
   if(sub_vo && ol_osd) {
-    vo_remove_text(movie_w,movie_h,clear_alpha);
+    vo_remove_text_noaspect(movie_w,movie_h,clear_alpha);
     sub_vo->draw_osd();
   }
 }
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_dxr3.c MPlayer-20050123/libvo/vo_dxr3.c
--- 1_MPlayer-20050123-orig/libvo/vo_dxr3.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_dxr3.c	2005-01-24 00:01:45.000000000 +0100
@@ -712,7 +712,7 @@
 	{
 		{
 		 mp_osd_obj_t* obj = vo_osd_list;
-		 vo_update_osd( osd_w,osd_h );
+		 vo_update_osd_noaspect( osd_w,osd_h );
 		 while( obj )
 		  {
 		   if ( obj->flags & OSDFLAG_VISIBLE ) { changed=1; break; }
@@ -721,7 +721,7 @@
 		}
 		if ( changed )
 		 {
-		  vo_draw_text(osd_w, osd_h, draw_alpha);
+		  vo_draw_text_noaspect(osd_w, osd_h, draw_alpha);
 		  memset(osdpicbuf, 0, s_width * s_height);
 		  cleared=0;
 		 }
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_fbdev2.c MPlayer-20050123/libvo/vo_fbdev2.c
--- 1_MPlayer-20050123-orig/libvo/vo_fbdev2.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_fbdev2.c	2005-01-24 00:00:44.000000000 +0100
@@ -333,7 +333,7 @@
 
 static void draw_osd(void)
 {
-	vo_draw_text(in_width, in_height, draw_alpha);
+	vo_draw_text_noaspect(in_width, in_height, draw_alpha);
 }
 
 // all csp support stride
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_fbdev.c MPlayer-20050123/libvo/vo_fbdev.c
--- 1_MPlayer-20050123-orig/libvo/vo_fbdev.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_fbdev.c	2005-01-24 00:00:44.000000000 +0100
@@ -1088,7 +1088,7 @@
 
 static void draw_osd(void)
 {
-	vo_draw_text(in_width, in_height, draw_alpha);
+	vo_draw_text_noaspect(in_width, in_height, draw_alpha);
 }
 
 static void uninit(void)
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_gl2.c MPlayer-20050123/libvo/vo_gl2.c
--- 1_MPlayer-20050123-orig/libvo/vo_gl2.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_gl2.c	2005-01-24 00:00:59.000000000 +0100
@@ -971,7 +971,7 @@
 static void draw_osd(void)
 {
   if (ImageData)
-    vo_draw_text(image_width,image_height,draw_alpha_fnc);
+    vo_draw_text_noaspect(image_width,image_height,draw_alpha_fnc);
 }
 
 static void
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_gl.c MPlayer-20050123/libvo/vo_gl.c
--- 1_MPlayer-20050123-orig/libvo/vo_gl.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_gl.c	2005-01-24 00:00:59.000000000 +0100
@@ -267,7 +267,7 @@
 /**
  * Creates the textures and the display list needed for displaying
  * an OSD part.
- * Callback function for vo_draw_text().
+ * Callback function for vo_draw_text_noaspect().
  */
 static void create_osd_texture(int x0, int y0, int w, int h,
                                  unsigned char *src, unsigned char *srca,
@@ -371,7 +371,7 @@
 
     osd_w = (scaled_osd) ? image_width : vo_dwidth;
     osd_h = (scaled_osd) ? image_height : vo_dheight;
-    vo_draw_text(osd_w, osd_h, create_osd_texture);
+    vo_draw_text_noaspect(osd_w, osd_h, create_osd_texture);
   }
 }
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_quartz.c MPlayer-20050123/libvo/vo_quartz.c
--- 1_MPlayer-20050123-orig/libvo/vo_quartz.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_quartz.c	2005-01-24 00:00:59.000000000 +0100
@@ -135,7 +135,7 @@
 #include "osdep/keycodes.h"
 extern void mplayer_put_key(int code);
 
-extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
+extern void vo_draw_text_noaspect(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
 
 //PROTOTYPE/////////////////////////////////////////////////////////////////
 void window_resized();
@@ -846,7 +846,7 @@
 
 static void draw_osd(void)
 {
-	vo_draw_text(imgRect.right,imgRect.bottom,draw_alpha);
+	vo_draw_text_noaspect(imgRect.right,imgRect.bottom,draw_alpha);
 }
 
 static void flip_page(void)
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_sdl.c MPlayer-20050123/libvo/vo_sdl.c
--- 1_MPlayer-20050123-orig/libvo/vo_sdl.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_sdl.c	2005-01-24 00:00:59.000000000 +0100
@@ -1452,12 +1452,12 @@
  
 	/* update osd/subtitles */
     if(priv->mode == YUV)
-        vo_draw_text(priv->overlay->w, priv->overlay->h, draw_alpha);
+        vo_draw_text_noaspect(priv->overlay->w, priv->overlay->h, draw_alpha);
     else {
         if(priv->dblit)
-            vo_draw_text(priv->surface->w, priv->surface->h, draw_alpha);
+            vo_draw_text_noaspect(priv->surface->w, priv->surface->h, draw_alpha);
         else
-            vo_draw_text(priv->rgbsurface->w, priv->rgbsurface->h, draw_alpha);
+            vo_draw_text_noaspect(priv->rgbsurface->w, priv->rgbsurface->h, draw_alpha);
     }
 }
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vosub_vidix.c MPlayer-20050123/libvo/vosub_vidix.c
--- 1_MPlayer-20050123-orig/libvo/vosub_vidix.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vosub_vidix.c	2005-01-24 00:00:59.000000000 +0100
@@ -333,7 +333,7 @@
 {
   if(verbose > 1) printf("vosub_vidix: vidix_draw_osd() was called\n");
   /* TODO: hw support */
-  vo_draw_text(vidix_play.src.w,vidix_play.src.h,draw_alpha);
+  vo_draw_text_noaspect(vidix_play.src.w,vidix_play.src.h,draw_alpha);
 }
 
 uint32_t vidix_query_fourcc(uint32_t format)
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_svga.c MPlayer-20050123/libvo/vo_svga.c
--- 1_MPlayer-20050123-orig/libvo/vo_svga.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_svga.c	2005-01-24 00:01:32.000000000 +0100
@@ -614,10 +614,10 @@
                    x_pos, image_height);
     svga_clear_box(image_width + x_pos, y_pos + PageStore[cpage].yoffset, 
                    modeinfo->width-(x_pos+image_width), image_height);
-//    vo_remove_text(modeinfo->width, modeinfo->height, clear_alpha);
-    vo_draw_text(modeinfo->width, modeinfo->height, draw_alpha);
+//    vo_remove_text_noaspect(modeinfo->width, modeinfo->height, clear_alpha);
+    vo_draw_text_noaspect(modeinfo->width, modeinfo->height, draw_alpha);
   }else{
-    vo_draw_text(image_width, image_height, draw_alpha);
+    vo_draw_text_noaspect(image_width, image_height, draw_alpha);
   }
 }
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_tdfxfb.c MPlayer-20050123/libvo/vo_tdfxfb.c
--- 1_MPlayer-20050123-orig/libvo/vo_tdfxfb.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_tdfxfb.c	2005-01-24 00:00:59.000000000 +0100
@@ -341,7 +341,7 @@
 static void draw_osd(void)
 {
 	if(!vo_doublebuffering)
-		vo_draw_text(in_width, in_height, draw_alpha);
+		vo_draw_text_noaspect(in_width, in_height, draw_alpha);
 }
 
 /* Render onto the screen */
@@ -406,7 +406,7 @@
 
 	/* Render any text onto this buffer */
 	if(vo_doublebuffering)
-		vo_draw_text(vidwidth, vidheight, draw_alpha_double);
+		vo_draw_text_noaspect(vidwidth, vidheight, draw_alpha_double);
 
 	/* And flip to the new buffer! */
 	reg_IO->vidDesktopStartAddr = vidpageoffset;
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_vesa.c MPlayer-20050123/libvo/vo_vesa.c
--- 1_MPlayer-20050123-orig/libvo/vo_vesa.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_vesa.c	2005-01-24 00:00:59.000000000 +0100
@@ -371,7 +371,7 @@
    w = dstW;
    h = dstH;
 #endif
-   if(dga_buffer) vo_draw_text(w,h,draw_alpha_fnc);
+   if(dga_buffer) vo_draw_text_noaspect(w,h,draw_alpha_fnc);
  }
 }
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_x11.c MPlayer-20050123/libvo/vo_x11.c
--- 1_MPlayer-20050123-orig/libvo/vo_x11.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_x11.c	2005-01-24 03:08:22.000000000 +0100
@@ -563,7 +563,7 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(image_width, image_height, draw_alpha_fnc);
+    vo_draw_text_noaspect(image_width, image_height, draw_alpha_fnc);
 }
 
 static void flip_page(void)
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_xv.c MPlayer-20050123/libvo/vo_xv.c
--- 1_MPlayer-20050123-orig/libvo/vo_xv.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_xv.c	2005-01-24 03:15:44.000000000 +0100
@@ -564,7 +564,7 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(image_width -
+    vo_draw_text_noaspect(image_width -
                  image_width * vo_panscan_x / (vo_dwidth + vo_panscan_x),
                  image_height, draw_alpha_fnc);
 }
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_xvmc.c MPlayer-20050123/libvo/vo_xvmc.c
--- 1_MPlayer-20050123-orig/libvo/vo_xvmc.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_xvmc.c	2005-01-24 00:01:45.000000000 +0100
@@ -978,7 +978,7 @@
       if(!subpicture_alloc) 
          return;//dimensions still unknown.
 
-      osd_has_changed = vo_update_osd(subpicture.width, subpicture.height);
+      osd_has_changed = vo_update_osd_noaspect(subpicture.width, subpicture.height);
       have_osd_to_draw = vo_osd_check_range_update(0, 0, subpicture.width, 
                                                          subpicture.height); 
 
@@ -986,9 +986,9 @@
          return;//nothing to draw,no subpic, no blend
 
       if(osd_has_changed){
-         //vo_remove_text(subpicture.width, subpicture.height,clear_osd_fnc)
+         //vo_remove_text_noaspect(subpicture.width, subpicture.height,clear_osd_fnc)
          clear_osd_fnc(0,0,subpicture.width,subpicture.height);
-         vo_draw_text(subpicture.width, subpicture.height, draw_osd_fnc);
+         vo_draw_text_noaspect(subpicture.width, subpicture.height, draw_osd_fnc);
       }
       XvMCSyncSubpicture(mDisplay,&subpicture);//todo usleeep wait!
 
diff -wurB 1_MPlayer-20050123-orig/libvo/vo_yuv4mpeg.c MPlayer-20050123/libvo/vo_yuv4mpeg.c
--- 1_MPlayer-20050123-orig/libvo/vo_yuv4mpeg.c	2005-01-23 23:48:14.000000000 +0100
+++ MPlayer-20050123/libvo/vo_yuv4mpeg.c	2005-01-24 00:00:59.000000000 +0100
@@ -208,7 +208,7 @@
 
 static void draw_osd(void)
 {
-    vo_draw_text(image_width, image_height, draw_alpha);
+    vo_draw_text_noaspect(image_width, image_height, draw_alpha);
 }
 
 static void deinterleave_fields(uint8_t *ptr, const int stride,
