XNA MAtrix Object rotates, scales, but does not move


I have the following transformation method to transform all vértices in the buffer:

        public void Transform(ITransform transform)
        {
            for (int i = 0; i < renderBuffer.Length; i++)
                renderBuffer(i).Position = Vector4.Transform(
                    transform.TransformationMatrix,
                    new Vector4(buffer(i).Position, 1)).Xyz;
        }

The transformation matrix is ​​composed as follows:

    void ITransform.Update()
    {
        TransformationMatrix = 
            Matrix4.CreateScale(Scale);
        TransformationMatrix *= 
            Matrix4.CreateFromQuaternion(Rotation);
        TransformationMatrix *= 
            Matrix4.CreateTranslation(Position);
    }

The object rotates and scales well, but is not translated. I'm not sure why ...

Supplementary Code:

    public static implicit operator Microsoft.Xna.Framework.Vector3(Vector3 a) =>
        new Microsoft.Xna.Framework.Vector3(a.X, a.Y, a.Z);

    public static implicit operator Vector3(Microsoft.Xna.Framework.Vector3 a) =>
       new Vector3(a.X, a.Y, a.Z);


    public static void Transform(ref Matrix4 mat, ref Vector4 vec, out Vector4 result)
    {
        result = new Vector4(
            (mat.Row0.X * vec.X) + (mat.Row0.Y * vec.Y) + (mat.Row0.Z * vec.Z) + (mat.Row0.W * vec.W),
            (mat.Row1.X * vec.X) + (mat.Row1.Y * vec.Y) + (mat.Row1.Z * vec.Z) + (mat.Row1.W * vec.W),
            (mat.Row2.X * vec.X) + (mat.Row2.Y * vec.Y) + (mat.Row2.Z * vec.Z) + (mat.Row2.W * vec.W),
            (mat.Row3.X * vec.X) + (mat.Row3.Y * vec.Y) + (mat.Row3.Z * vec.Z) + (mat.Row3.W * vec.W));
    }


    public static void CreateTranslation(float x, float y, float z, out Matrix4 result)
    {
        result = Identity;
        result.Row3.X = x;
        result.Row3.Y = y;
        result.Row3.Z = z;
    }

Any help is appreciated ...

EDIT:

It works with the following code:

    public void Transform(ITransform transform)
        {
            for (int i = 0; i < renderBuffer.Length; i++)
                renderBuffer(i).Position = Vector4.Transform(
                    transform.TransformationMatrix,
                    new Vector4(buffer(i).Position, 1)).Xyz +
                    transform.TransformationMatrix.ExtractTranslation();
        }

But shouldn't the Vector4.Transform take care of it ????