I tried these both (not at the same time, of course):
[code=delphi]
FScale := Vec3(2.0, 2.0, 2.0);
// #1
CachedMatrix := Mat4Multiply(Mat4Multiply(Mat4CreateRotationEuler( FRotation),
Mat4CreateTranslation(Vec3Negate(FPosition))), Mat4CreateScale(FScale));
// #2
CachedMatrix := Mat4Multiply(Mat4Multiply(Mat4CreateRotationEuler( FRotation),
Mat4CreateScale(FScale)), Mat4CreateTranslation(Vec3Negate(FPosition)));
[/code]

EDIT
I got it working. It's still in tests, though. Here's the code anyway:
[code=delphi]
CachedMatrix := Mat4Translate(Mat4Multiply(Mat4CreateRotationEuler (FRotation),
Mat4CreateScale(FScale)), Vec3Negate(FPosition));
[/code]