It doesn't only depend to the pitch, but also on the pixel-format of the source. If that is BGR or BGRA, the following pseudo-code based on what you post
should be usable. If the color-order is different, like RGB or RGBA, you need to copy the single color-bytes. Best done by defining a record for the pixel.
// Pointers to Pixels in Source/Target to be copied
var
pPixS, pPixT: pByte;
// Bytes per Pixel for the Source-Texture
// would be 3 for BGR, 4 for BGRA
// if the channels have a different order, like RGB,
// then the single color bytes need to be copied.
var
BytesPerPixel: integer;
// Common Width and Height of Source and Target
var
Width, Height: integer;
for I := 0 to Height - 1 do
begin
pPixS := @FTexture.pData[FTexture.RowPitch * I];
pPixT := FBitmap.Scanline[I];
for j := 0 to Width - 1 do
begin
Move(pPixS^, pPixT^, BytesPerPixel);
inc(pPixS, BytesPerPixel);
inc(pPixT, 4);
end;
end;