Index: src/win/d3d_bmp.cpp
===================================================================
--- src/win/d3d_bmp.cpp	(revision 15275)
+++ src/win/d3d_bmp.cpp	(working copy)
@@ -659,13 +659,57 @@
    }
 
    if (d3d_src->is_backbuffer) {
+      IDirect3DSurface9 *surface;
+      D3DSURFACE_DESC desc;
+      if (d3d_src->display->render_target->GetDesc(&desc) != D3D_OK) {
+         ALLEGRO_ERROR("d3d_draw_bitmap_region: GetDesc failed.\n");
+         return;
+      }
+      if (desc.MultiSampleType == D3DMULTISAMPLE_NONE) {
+         surface = d3d_src->display->render_target;
+      }
+      else {
+         RECT r;
+         if (d3d_src->display->device->CreateRenderTarget(
+		desc.Width,
+		desc.Height,
+		desc.Format,
+		D3DMULTISAMPLE_NONE,
+		0,
+		TRUE,
+		&surface,
+		NULL
+	) != D3D_OK) {
+            ALLEGRO_ERROR(
+	    	"d3d_draw_bitmap_region: CreateRenderTarget failed.\n");
+            return;
+         }
+	 r.top = 0;
+	 r.left = 0;
+	 r.right = desc.Width;
+	 r.bottom = desc.Height;
+	 if (d3d_src->display->device->StretchRect(
+	 	d3d_src->display->render_target,
+		&r,
+		surface,
+		&r,
+		D3DTEXF_NONE
+	 ) != D3D_OK) {
+	    ALLEGRO_ERROR("d3d_draw_bitmap_region: StretchRect failed.\n");
+	    surface->Release();
+	    return;
+	 }
+      }
       ALLEGRO_BITMAP *tmp_bmp = d3d_create_bitmap_from_surface(
-         d3d_src->display->render_target,
+         surface,
          src->flags);
       if (tmp_bmp) {
          d3d_draw_bitmap_region(tmp_bmp, tint,
             sx, sy, sw, sh, flags);
          al_destroy_bitmap(tmp_bmp);
+	 if (desc.MultiSampleType != D3DMULTISAMPLE_NONE) {
+	    surface->Release();
+	 }
       }
       return;
    }
