Glsl shader imageStore only works with rgba32f image format

You should look into these two posts for details, but the short version is that floating-point normalization uses implementation-defined rounding. So unless you do normalization manually, you cannot guarantee that a floating-point value of 0.5 will produce a normalized integer value of 1.