ROC curves/AUC values as a performance metric
The results you posted are correct, I did a quick check with library(pROC) and got the same thing.  The important feature for AUC/ROC is that the cutpoint of calling a sample "1" or "0" is not set at 0.5.  For each of your predictors, the range of the numbers do not matter at all.  What does matter is how often higher numbers are associated with true positive labels.  Example:

Method 1:[1, 3, 5, 6, 9, 14] (predictor)
Method 1:[0, 0, 1, 0 ,1 , 1] (true label)
AUC: 0.8889

Method 2:[[0.01, 0.02, 200 , 250, 300, 1000000] (predictor)
Method 2:[0, 0, 1, 0 ,1 , 1] (true label)
AUC: 0.8889


The AUC measure is just a measure of how often true "1" samples have a higher number than true "0" samples.  The predictor does not have to even be bounded by [0,1], it can be any range.

Your plot would be more informative if it was sorted.  Consider the below sorted plot (crude, sorry) for each of the three methods, with the "1" labels highlighted in blue.  badaI clearly has the closest grouping of "1"s towards the higher values.