You can try this construction, but small problem with alpha is here still... :cry: sorry

Code:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  dd1.surface.fill(dd1.Surface.ColorMatch(clBlack));
  dl1.Items.Find('krecci').StretchDraw(dd1.Surface, dd1.Surface.ClientRect, 0);
  PrepareNewSurface;
  dd1.ClearStack;
  if doDraw.Checked then
    //dd1.Surface.Draw( 0, 0, newsurface )
    dd1.Surface.Draw(0, 0, newsurface.ClientRect, newsurface)
  else if doBlend.Checked then begin
    if dd1.Surface.Lock then begin
      dd1.Surface.DrawAlpha(dd1.Surface.ClientRect, newSurface.ClientRect, newsurface, True, 128);
      dd1.Surface.UnLock;
    end;
  end
  else
    dd1.Surface.BltFast(0, 0, dd1.surface.ClientRect, 0, newsurface);

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