diff --git a/src/PIL/ImageMode.py b/src/PIL/ImageMode.py
index fb16f28a4..596be7b9d 100644
--- a/src/PIL/ImageMode.py
+++ b/src/PIL/ImageMode.py
@@ -48,9 +48,17 @@ def getmode(mode):
         modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L")
         modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L")
         # mapping modes
-        modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L")
-        modes["I;16L"] = ModeDescriptor("I;16L", "I", "L", "L")
-        modes["I;16B"] = ModeDescriptor("I;16B", "I", "L", "L")
+        for i16mode in (
+            "I;16",
+            "I;16S",
+            "I;16L",
+            "I;16LS",
+            "I;16B",
+            "I;16BS",
+            "I;16N",
+            "I;16NS",
+        ):
+            modes[i16mode] = ModeDescriptor(i16mode, ("I",), "L", "L")
         # set global mode cache atomically
         _modes = modes
     return _modes[mode]
diff --git a/src/PIL/ImageShow.py b/src/PIL/ImageShow.py
index 8fc17a638..209b803c5 100644
--- a/src/PIL/ImageShow.py
+++ b/src/PIL/ImageShow.py
@@ -63,16 +63,12 @@ class Viewer(object):
     def show(self, image, **options):
 
         # save temporary image to disk
-        if image.mode[:4] == "I;16":
-            # @PIL88 @PIL101
-            # "I;16" isn't an 'official' mode, but we still want to
-            # provide a simple way to show 16-bit images.
-            base = "L"
-            # FIXME: auto-contrast if max() > 255?
-        else:
+        if not (
+            image.mode in ("1", "RGBA") or (self.format == "PNG" and image.mode == "LA")
+        ):
             base = Image.getmodebase(image.mode)
-        if base != image.mode and image.mode != "1" and image.mode != "RGBA":
-            image = image.convert(base)
+            if image.mode != base:
+                image = image.convert(base)
 
         return self.show_image(image, **options)
 

Image.show() on image with mode LA does not show transparency
When I use `Image.show()` on an image with mode `LA`, transparency is not shown.  When I use `.save(...)`, the resulting image has transparency included correctly.  With mode `RGBA`, transparency is correctly displayed on `.show()` (and correctly written on `.save(...)`).

### What did you do?

I used `.show()` on an image with mode `LA`.

### What did you expect to happen?

I expected it to display an image with transparency:

![im1](https://user-images.githubusercontent.com/500246/58331700-faf35f00-7e39-11e9-973a-d1d2dd1414cf.png)

### What actually happened?

It showed an image without transparency:

![tmplevyr9u2](https://user-images.githubusercontent.com/500246/58331737-0fcff280-7e3a-11e9-9179-baf3a324f971.PNG)

### What are your OS, Python and Pillow versions?

* OS: openSUSE 15.0
* Python: 3.7.3
* Pillow: 6.0.0

```python
from numpy import linspace, block, concatenate, zeros, full
from PIL import Image

L = linspace(0, 255, 200*200, dtype="u1").reshape(200, 200, 1)
A = block([[zeros((100, 100), "u1"),             full((100, 100), 255, "u1")],
            [full((100, 100), 255, "u1"),
            zeros((100, 100), "u1")]]).reshape(200, 200, 1)
im1 = Image.fromarray((concatenate((L, A), 2)), mode="LA")
im2 = Image.fromarray((concatenate((L, L, L, A), 2)), mode="RGBA")
im1.show()
im2.show()
```

diff --git a/Tests/test_image_mode.py b/Tests/test_image_mode.py
index 345c0dacb..bdfb6883b 100644
--- a/Tests/test_image_mode.py
+++ b/Tests/test_image_mode.py
@@ -26,6 +26,17 @@ class TestImageMode(PillowTestCase):
         self.assertEqual(m.basemode, "L")
         self.assertEqual(m.basetype, "L")
 
+        for mode in ("I;16", "I;16S",
+                     "I;16L", "I;16LS",
+                     "I;16B", "I;16BS",
+                     "I;16N", "I;16NS"):
+            m = ImageMode.getmode(mode)
+            self.assertEqual(m.mode, mode)
+            self.assertEqual(str(m), mode)
+            self.assertEqual(m.bands, ("I",))
+            self.assertEqual(m.basemode, "L")
+            self.assertEqual(m.basetype, "L")
+
         m = ImageMode.getmode("RGB")
         self.assertEqual(m.mode, "RGB")
         self.assertEqual(str(m), "RGB")
diff --git a/Tests/test_imageshow.py b/Tests/test_imageshow.py
index 899c057d6..a2b02810e 100644
--- a/Tests/test_imageshow.py
+++ b/Tests/test_imageshow.py
@@ -18,18 +18,19 @@ class TestImageShow(PillowTestCase):
         ImageShow._viewers.pop()
 
     def test_show(self):
-        class TestViewer:
+        class TestViewer(ImageShow.Viewer):
             methodCalled = False
 
-            def show(self, image, title=None, **options):
+            def show_image(self, image, **options):
                 self.methodCalled = True
                 return True
         viewer = TestViewer()
         ImageShow.register(viewer, -1)
 
-        im = hopper()
-        self.assertTrue(ImageShow.show(im))
-        self.assertTrue(viewer.methodCalled)
+        for mode in ("1", "I;16", "LA", "RGB", "RGBA"):
+            im = hopper(mode)
+            self.assertTrue(ImageShow.show(im))
+            self.assertTrue(viewer.methodCalled)
 
         # Restore original state
         ImageShow._viewers.pop(0)

pip install -e .[dev]
parse_log_pytest
requirements.txt
apt-get update apt-get install -y gcc libjpeg-dev zlib1g-dev libtiff5-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev libharfbuzz-dev libfribidi-dev libxcb1-dev
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
babel==2.17.0
black==25.1.0
blessed==1.20.0
build==1.2.2.post1
certifi==2025.1.31
charset-normalizer==3.4.1
check-manifest==0.50
click==8.1.8
cov-core==1.15.0
coverage==7.8.0
coveralls==4.0.1
docopt==0.6.2
docutils==0.21.2
exceptiongroup==1.2.2
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
jarn.viewdoc==2.7
Jinja2==3.1.6
MarkupSafe==3.0.2
mypy-extensions==1.0.0
olefile==0.47
packaging==24.2
pathspec==0.12.1
-e git+https://github.com/python-pillow/Pillow.git@a986fed5b445bc9586476167b08d46e19cba1bbc#egg=Pillow
platformdirs==4.3.7
pluggy==1.5.0
pycodestyle==2.13.0
pyflakes==3.3.1
Pygments==2.19.1
pyproject_hooks==1.2.0
pyroma==4.2
pytest==8.3.5
pytest-cov==6.0.0
pytz==2025.2
requests==2.32.3
six==1.17.0
snowballstemmer==2.2.0
Sphinx==7.4.7
sphinx-rtd-theme==3.0.2
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
tomli==2.2.1
trove-classifiers==2025.3.19.19
typing_extensions==4.13.0
urllib3==2.3.0
wcwidth==0.2.13
zipp==3.21.0

name: Pillow
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - babel==2.17.0
      - black==25.1.0
      - blessed==1.20.0
      - build==1.2.2.post1
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - check-manifest==0.50
      - click==8.1.8
      - cov-core==1.15.0
      - coverage==7.8.0
      - coveralls==4.0.1
      - docopt==0.6.2
      - docutils==0.21.2
      - exceptiongroup==1.2.2
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - jarn-viewdoc==2.7
      - jinja2==3.1.6
      - markupsafe==3.0.2
      - mypy-extensions==1.0.0
      - olefile==0.47
      - packaging==24.2
      - pathspec==0.12.1
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - pycodestyle==2.13.0
      - pyflakes==3.3.1
      - pygments==2.19.1
      - pyproject-hooks==1.2.0
      - pyroma==4.2
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - pytz==2025.2
      - requests==2.32.3
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==7.4.7
      - sphinx-rtd-theme==3.0.2
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - tomli==2.2.1
      - trove-classifiers==2025.3.19.19
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - wcwidth==0.2.13
      - zipp==3.21.0
prefix: /opt/conda/envs/Pillow

Tests/test_image_mode.py::TestImageMode::test_sanity
Tests/test_image_mode.py::TestImageMode::test_properties Tests/test_imageshow.py::TestImageShow::test_register Tests/test_imageshow.py::TestImageShow::test_sanity Tests/test_imageshow.py::TestImageShow::test_show Tests/test_imageshow.py::TestImageShow::test_viewer Tests/test_imageshow.py::TestImageShow::test_viewers
src/PIL/ImageShow.py src/PIL/ImageMode.py
src/PIL/ImageShow.py src/PIL/ImageMode.py