Eso mismo. No es solo el flujo origen (InputStream) el que afecta, si no todos los que pones en el "camino", por eso al pasarlos por un Reader (InputStreamReader) estaba transformandote los bytes (para cambiarlos de codificacion) y de ahí el problema.
Me alegro que lo hayas encontrado
.