Key generation for AES-GCM-256 file encryption
In general, your concept looks OK to me. I do have a few remarks, though:


Hashing the password before feeding it to scrypt is useless
scrypt can process binary data, so there is no need for the base91 encoding step. Avoid steps that do not have a good reason
Using the slow password hashing function scrypt fo every file will result in a bad performance if you want to encrypt or decrypt a lot of files. Rather create a single masterkey from the password with scrypt and then create the file depending keys using a fast KDF like HKDF.
The biggest problem I can see: You are using a unique key for each file, but that is created by a random salt and not some file information. An attacker would be able to switch the content of two files (without altering it or learning the content) without you noticing it. To prohibit this, you should use some file metadata (preferable a unique file identifier like a file name/path) in the process. Either inject it into the key derivation process (using it as the salt) or authenticate it as additional data with AES-GCM.