A ‘\begin{multline}...\end{multline} is not a standard environment in the sense that the environment as a whole is read in one piece and then processed, instead of reading it piecewise and process it as it goes. That is, we have a behavior similar to that in verbatim environments. The behavior is due to multline being implemented in terms of \gather@#1{..}. Hence, for the picture environment, we need to change early the catcodes of ‘_ and ‘^.