if ( opacity == 1.0 ) {
Vermutlich liegt das Problem schlicht darin, dass du versuchst einen Float-Wert auf exakte Gleichheit zu prüfen. Recherchiere bitte, warum das problematisch ist.
War auch mein erster Gedanke, hatte er aber hier augenscheinlich schon geändert...