Это не обязательно «неправильно» с самого начала - нет точной спецификации относительно того, как браузер должен отображать такой элемент управления загрузкой файлов.
Ваш лучший вариант, если вы хотите получить полный контроль над тем, как это выглядит, это реализовать представленную здесь технику, https://tympanus.net/Tutorials/CustomFileInputs/
Это в основном скрывает собственный контроль, который браузер отображает для такого поля ввода файла, и заменяет его представлением по вашему выбору. (Для полноценной работы требуется JavaScript, но его можно легко реализовать таким образом, чтобы он по-прежнему отображал исходный элемент управления, если JS недоступен.)