I think there are some typos here.  Also, I think it's probably easier to follow if we use + for the Add and * for the Convolve:
```
img = int( (bulge + disk) * PSF * pix )
    = int( (g1 h1 + g2 h2) * f3 * g4 )
    = int( g1 h1 * f3 * g4 + g2 h2 * f3 * g4 )
    = int( g1 h1 * f3 * g4 ) + int( g2 h2 * f3 * g4 )
    = g1 * g4 * int( h1 f3 ) + g2 * g4 * int( h2 f3 )
```
These are the same steps you did, but without so many parens, I think it's a bit easier to see what is going on.