Solved it!
float4 NewPos = float4(InPosition.xyz, 1.f);
float4 NewPosTmp = NewPos;
float3 NewScale = (InScale * In2Scale);
float3 NewOffset = (InOffset);
float4x4 TransformMat1 = {
/*M[0][0]*/ NewScale.x, /*M[1][0]*/ 0.f, /*M[2][0]*/ 0.f, 0.f,
/*M[0][1]*/ 0.f, /*M[1][1]*/ NewScale.y, /*M[2][1]*/ 0.f, 0.f,
/*M[0][2]*/ 0.f, /*M[1][2]*/ 0.f, /*M[2][2]*/ 1.f, 0.f,
0.0f, 0.0f, 0.0f, 1.0f
};
float4x4 TransformMat2 = {
/*M[0][0]*/ 1.f, /*M[1][0]*/ 0.f, /*M[2][0]*/ 0.f, NewOffset.x,
/*M[0][1]*/ 0.f, /*M[1][1]*/ 1.f, /*M[2][1]*/ 0.f, NewOffset.y,
/*M[0][2]*/ 0.f, /*M[1][2]*/ 0.f, /*M[2][2]*/ 1.f, NewOffset.z,
0.0f, 0.0f, 0.0f, 1.0f
};
NewPos = mul(TransformMat2, NewPos);
NewPos = mul(TransformMat1, NewPos);
float4x4 TransformMat4 = {
/*M[0][0]*/ 1.f, /*M[1][0]*/ 0.f, /*M[2][0]*/ 0.f, In2Offset.x,
/*M[0][1]*/ 0.f, /*M[1][1]*/ 1.f, /*M[2][1]*/ 0.f, In2Offset.y,
/*M[0][2]*/ 0.f, /*M[1][2]*/ 0.f, /*M[2][2]*/ 1.f, In2Offset.z,
0.0f, 0.0f, 0.0f, 1.0f
};
NewPos = mul(TransformMat4, NewPos);
additional i need to subtract the LocalPosition before i pass it into the WorldPositionOffset