Hello!

I tried your example!

And there is my solution (you have to use version undelphi 1.07b):

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, DXClass, DXDraws, StdCtrls;

type
  TForm1 = class(TForm)
    dd1: TDXDraw;
    DXTimer1: TDXTimer;
    doBltFast: TRadioButton;
    doDraw: TRadioButton;
    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
    procedure dd1Initialize(Sender: TObject);
    procedure PrepareNewSurface;
  private
     newsurface: TDirectDrawSurface;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var 
   nWidth: Integer = 0; 
   bGoing: Boolean = true; 

procedure TForm1.PrepareNewSurface;
begin 
   newsurface.Fill( 0 ); 
   newsurface.Canvas.Rectangle( 10, 10, 10 + nWidth, 50 ); 

   if bGoing then
   begin 
      Inc( nWidth, 3 ); 

      if nWidth = newsurface.Width - 10 then 
         bGoing := not bGoing; 
   end
   else 
   begin 
      Dec( nWidth, 3 ); 

      if nWidth <= 10 then 
         bGoing &#58;= not bGoing;
   end; 

   newsurface.Canvas.Release; 
end; 

procedure TForm1.DXTimer1Timer&#40;Sender&#58; TObject; LagCount&#58; Integer&#41;;
begin 
   dd1.surface.fill&#40; 0 &#41;;
   PrepareNewSurface; 
   dd1.ClearStack;
   if doDraw.Checked then
      dd1.Surface.Draw&#40; 0, 0, newsurface &#41;
   else
      dd1.Surface.BltFast&#40; 0, 0, dd1.surface.ClientRect, 0, newsurface &#41;;

   dd1.surface.canvas.release; 
   dd1.Flip; 
end;

procedure TForm1.dd1Initialize&#40;Sender&#58; TObject&#41;; 
begin 
   newsurface &#58;=TDirectDrawSurface.Create&#40; dd1.DDraw &#41;; 
   newsurface.SetSize&#40; dd1.Width, dd1.height &#41;; 
end;

end.
Shortly, use simple
Code:
dd1.ClearStack;
for clear texture stack.

Regards