diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
index 57986f0d5..85453cb6d 100644
--- a/plugins/trezor/plugin.py
+++ b/plugins/trezor/plugin.py
@@ -4,7 +4,8 @@ from binascii import hexlify, unhexlify
 
 from electrum.util import bfh, bh2u
 from electrum.bitcoin import (b58_address_to_hash160, xpub_from_pubkey,
-                              TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants)
+                              TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants,
+                              is_segwit_address)
 from electrum.i18n import _
 from electrum.plugins import BasePlugin
 from electrum.transaction import deserialize
@@ -351,7 +352,19 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                     txoutputtype.script_type = self.types.PAYTOOPRETURN
                     txoutputtype.op_return_data = address[2:]
                 elif _type == TYPE_ADDRESS:
-                    txoutputtype.script_type = self.types.PAYTOADDRESS
+                    # trezor would be fine with self.types.PAYTOADDRESS
+                    # for any non-change output
+                    # but we need to maintain keepkey compatibility in this cls
+                    if is_segwit_address(address):
+                        txoutputtype.script_type = self.types.PAYTOWITNESS
+                    else:
+                        addrtype, hash_160 = b58_address_to_hash160(address)
+                        if addrtype == NetworkConstants.ADDRTYPE_P2PKH:
+                            txoutputtype.script_type = self.types.PAYTOADDRESS
+                        elif addrtype == NetworkConstants.ADDRTYPE_P2SH:
+                            txoutputtype.script_type = self.types.PAYTOSCRIPTHASH
+                        else:
+                            raise BaseException('addrtype: ' + str(addrtype))
                     txoutputtype.address = address
 
             outputs.append(txoutputtype)