This is most likely a scaling issue. IIRC, by default WriteBrik writes its output as 16-bit integers without scaling, so values between 0 and 1 will be written as either 0 or 1. If you add a .Scale field with value 1 to the Opt struct, the data will be scaled to fit the range of 16-bit representable values.