--- ---

    type
      TScrollingPaintBox = class(TScrollingWinControl)
      private
        FCanvas: TCanvas;
      public
        constructor Create(aOwner: TComponent); override;
        destructor Destroy; override;
        property Canvas: TCanvas read FCanvas;
      end;

    constructor TScrollingPaintBox.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FCanvas := TControlCanvas.Create;
      TControlCanvas(FCanvas).Control := Self;
    end;

    destructor TScrollingPaintBox.Destroy;
    begin
      FCanvas.Free;
      inherited Destroy;
    end;

A TControlCanvas is important because it creates a DC (device context) that belongs to the HWND of the control. Also, override is important on your constructor and destructor to ensure that they are actually called.