@ogrisel correctly noticed this is similar to `sklearn.preprocessing.MinMaxScaler`.  However this is different because it only translates the data if it's needed, and therefore it can take sparse matrices.  I vote for leaving it the way it is, it wouldn't be trivial to reuse MinMaxScaler.

ping @agramfort too